「ぐいぐい01」のAPIのための構造体のフォーマットなど(1)
- (by K, 2008.11.18)
(1) gh4
- アプリの実行ファイル内の数値記述の基本エンコード。API内でもデフォルトのエンコード。
- (註)旧バージョンではこれに比較的よく似た"eh4"というものが使われていた。
総bit長 フォーマット(2進数) xのbit数 表現可能な最大値(10進) 同最大値(16進) 俗称 4 0xxx 3 (註)6 (註)6 0型 8 10xxxxxx 6 63 3F 8型 12 110xxxxxxxxx 9 511 1FF C型 16 1110xxxx....xxxx 12 4095 FFF E型 20 1111_0xxxx....xxxx 15 32767 7FFF F0型 24 1111_10xxxx....xxxx 18 262143 3_FFFF F8型 28 1111_110xxxx....xxxx 21 2097151 1F_FFFF FC型 32 1111_1110xxxx....xxxx 24 (省略) FF_FFFF FE型 36 0111_1111_1110xxxx....xxxx 24 (註)(省略) FF_FFFF 7FE型 40 0111_0100xxxx....xxxx 32 (省略) FFFF_FFFF 74型 44 0111_0111_0100xxxx....xxxx 32 (省略) FFFF_FFFF 774型 48 0111_0101xxxx....xxxx 40 (省略) FF_FFFF_FFFF 75型 52 0111_0111_0101xxxx....xxxx 40 (省略) FF_FFFF_FFFF 775型 56 0111_0110xxxx....xxxx 48 (省略) FFFF_FFFF_FFFF 76型 60 0111_0111_0110xxxx....xxxx 48 (省略) FFFF_FFFF_FFFF 776型 64 1111_1111_0xxxx....xxxx 55 (省略) 7F_FFFF_FFFF_FFFF FF0型 68 0111_1111_1111_0xxxx....xxxx 55 (省略) 7F_FFFF_FFFF_FFFF 7FF0型 72 0111_0111_1111_1111_0xxxx....xxxx 55 (省略) 7F_FFFF_FFFF_FFFF 77FF0型 76 0111_0111_0111_1111_1111_0xxxx....xxxx 55 (省略) 7F_FFFF_FFFF_FFFF 777FF0型 80 1111_1111_10xxxx....xxxx 70 (省略) 3F_FFFF_FFFF_FFFF_FFFF FF8型 84~92 (7FF8型~777F8型) 70 (省略) (省略) 96 1111_1111_110xxxx....xxxx 85 (省略) (省略) FFC型 100~112 (7FFC型~777FC型) 85 (省略) (省略) 128 1111_1111_1110xxxx....xxxx 116 (省略) (省略) FFE型 132~156 (7FFE型~7777777FE型) 116 (省略) (省略) 160 0111_1010_0000xxxx....xxxx 148 (省略) (省略) 7A0型 164~188 (77A0型~77777777A0型) 148 (省略) (省略) 192 0111_1010_0001xxxx....xxxx 180 (省略) (省略) 7A1型 196~220 (77A1型~77777777A1型) 180 (省略) (省略) 224 0111_1010_0010xxxx....xxxx 212 (省略) (省略) 7A2型 228~252 (77A2型~77777777A2型) 212 (省略) (省略) 256 0111_1010_0011xxxx....xxxx 244 (省略) (省略) 7A3型 - (註)どのフォーマットでも表現可能な最小値は0。
- (註)"0111"は特別な意味があるので(プリフィクス)、7は8bit以上で表現する。
- (註)総bit長36bit形式は1つのプリフィクスのあとに32bit形式が続いただけのものなので、表現力は増えない。これを「36bit形式は基本形式ではない」と呼ぶことにする。44bit形式も基本形式ではない。一般に、nbit形式が基本形式であるかどうかは、nを2進数表記したときに最初の3bit以外のbitに"1"があるかどうかで決められている。
- このような仕様は非常に長い形式に対してヘッダを短くするためのものである。32bit形式までのように単調に決めていくと(これはsh4と呼ばれる)総ビット長のうちx以外のビットが占める割合は25%を下回ることがないが、gh4の方法だと極端に長い形式では25%を十分に下回ることができ、効率がいい(たとえば32768bit形式では、0.037%未満になる?)。
- ただしそのような非常に長い形式はおそらくめったに出てこないので、32bit形式以下では(4bitの7ができないことを除いて)そのような工夫を施していない(工夫を入れるとどうしても短い形式で効率が下がる)。
- (註)"0111"の直後に4bit形式の0~3や、8bit形式の0~31や、12bit形式の0~255が来る形式などはgh4を利用する仕様が特別な意味を持たせるために独自に意味を持たせる。特に断りがなければ使用不能な組合せとする。"0111"の直後に32bit形式より長い形式が来る場合についてのリザーブはない。たとえば"0111"の直後に32bit形式が来るのはただの36bit形式であり、独自に意味を持たせる余裕はない。
- (註)見ての通りgh4は4の倍数のbit長であればすべての長さの形式を持っており、どのような長さの場所にも隙間なく入れることができる。したがってアライン等のためのパディングの仕様を上位仕様で考慮しなくてもよい。
- (註)260bit以上の長さの仕様ももちろん存在するが、表の中では省略している。256bit以下の仕様から十分に推測可能だろう。ただし7B8型~7BF型は将来の拡張性のためにリザーブされている。
Counter: 171,
today: 1,
yesterday: 1
初版日時: 2008-11-18 (火) 12:39:12
最終更新: 2009-11-21 (土) 00:00:00 (JST) (319d) by k-tan
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | GUIGUI01/man0004 | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | k-tan | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |