情報を記録する方法

同じ情報を記録するにも様々な方法があります

月の情報を記録する

保存するデータは次の6つの月名。同じ情報を伝えるのに短い方がいい。

3月 9月 1月 12月 8月 10月

文字で表現

まず月の文字は不要。残りは数字だけなのでASCIIでOK

3 9 1 12 8 10

ビット列で表せば次の様になります。

文字 3 9 1 12 8 10
ビット列 00110011001000000011100100100000 0011000100100000001100010011001000100000 00111000001000000011000100110000
16進表現 33203920 3120313220 38203130

スペースは区切り文字として入れています。区切り文字にコンマを使うと次の様になります。

文字 3,9, 1,12, 8,10
ビット列 00110011001011000011100100101100 0011000100101100001100010011001000101100 00111000001011000011000100110000
16進表現 332C392C 312C31322C 382C3130

区切り文字は1,1211,2の区別のために必要です。全部の長さは13バイト(104 ビット)になります。

16進表示を使えば全部1桁で済みますから区切り文字がいらなくなります。この場合、全部の長さは6バイト(48 ビット)になります。

391C8A

ビット列では

文字 39 1C 8A
ビット列 0011001100111001 0011000101000011 0011100001000001
16進表現 3339 3143 3841

かつては缶詰の製造年月の刻印に10を0、11をY、12をZとしていたことがあります。

数値で表現

1バイトの符号なし整数では0から255までの数を表現できます。この場合は文字では書くことができません。全部の長さは6バイト(48 ビット)になります。

ビット列では

数値 39 112 810
ビット列 0000001100001001 0000000100001100 0000100000001010
16進表現 0309 010C 080A

4ビットあれば、0から15までの数値を表現できますから、4ビットで1つの月を表すと取り決めをすればもっと短く表現できます。全部の長さは3バイト(24 ビット)になります。

ビット列では

数値 39 112 810
ビット列 00111001 00011100 10001010
16進表現 39 1C 8A

特別なコードで表現

24ビットが最小ではありません。12種類の月が6つ並ぶデータですからその並び方は126通りあります。計算すると2985984です。

221=2097152、222=4194304 ですから、22ビットあれば表現できる計算です。

月のまとめ

6つの月名を記録するには、

表現方法ビットバイト備考
文字(10進、区切り文字あり)88〜13611〜17可変長(上の例では13バイト)
文字(16進)486固定長
数値(8ビット)486固定長
数値(4ビット)243固定長
特殊コード223固定長(2バイトでは16ビットまでなので3バイト)

ただし、バイト数の部分は1バイトを8ビットとして最低必要なバイト数として計算しています。

データの転送や保存が8ビット単位であればこのバイト数が実際に必要になる量です。転送や保存がビット単位に行われる場合はビット数で計算します。

日の情報を記録する

6つの日付を記録するには、

表現方法ビットバイト備考
文字(10進、区切り文字あり)たぶん可変長
文字(?進)16進でも固定長にならない?
数値(8ビット)固定長
数値(?ビット)固定長
特殊コード

月日の情報を記録する

6つの月日を記録するには、

表現方法ビットバイト備考
文字(10進、区切り文字あり)たぶん可変長
文字(?進)16進でも固定長にならない?
数値(8ビット)固定長
数値(?ビット)固定長
特殊コード

聖愛中学高等学校
http://www.seiai.ed.jp/
Last Modified