• ベストアンサー

データ量の単位について教えてください

8bit=1B(バイト), 2^10=1024B = 1KB 1024KB=1MB 1024MB=1GB のとき (1)アルファベット26文字×2(大文字と小文字),0~9の数字と30種類程度のよく使う記号(「,」「.」「:」「!」など)に2進数をひとつずつ割り当てて表すとすると,最低何ビット(何桁)必要か. (2)同様に,1万種類の漢字を表すためには最低何ビット必要か. 解き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mink6137
  • ベストアンサー率23% (595/2500)
回答No.5

ご質問の主旨に沿って、「解き方」だけをお示しします。 >(1)アルファベット26文字×2(大文字と小文字),0~9の数字と30種類程度のよく使う記号 >(「,」「.」「:」「!」など)に2進数をひとつずつ割り当てて表すとすると, >最低何ビット(何桁)必要か. 文字、記号の種類数を(26X2 + 10 + 30 =92)とします。 必要な2進数のビット数をNとすると、 2^N=92 より、 N=log92 / log2=6.52 ビット数は整数でなければならないので、ガウスの整数NNを使います。 NN=ceiling (6.52) = 7 すなわち、92種類を表現するに必要な最低ビット数は7ビットになります。 なお、7ビットでは(2^7=128)まで表現可能ですが、このケースでは128-92=36種類空きになります。 >(2)同様に,1万種類の漢字を表すためには最低何ビット必要か. 上と同様に、 2^N=10000 より、 N=log10000 / log2=13.28 ビット数は整数でなければならないので、ガウスの整数NNを使います。 NN=ceiling (13.28) = 14 すなわち、10000種類を表現するに必要な最低ビット数は14ビットになります。 なお、14ビットでは(2^14=16384)まで表現可能ですが、このケースでは6384種類が空きになります。

rider88
質問者

お礼

丁寧な解説ありがとうございました。

その他の回答 (4)

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.4

なぜ1文字(1バイト)が8ビットなのかかんがえてみてください。 別に10ビットでも15ビットでもいい話。 ちなみにアスキーコードは7ビットで1文字を表現します。 8ビットに決まったのはIBM製のEBCDICコードからです。

rider88
質問者

お礼

ご指摘ありがとうございました。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.3

2進数で表すとき、ビット数とパターン数の関係は nビットの時、2^n(2のn乗)パターンを表すことができます。 例えば10000通りのパターンを表すためには 2^1(1ビット、2の1乗)・・・2通り 2^2・・・4通り 2^3・・・8通り ・・・ という形でビット数を増やしていって、10000通りを超えた時のビット数が最低でも必要だということになります。 (1)のパターン数の考え方は 26(文字)*2(大文字、小文字)+10(0~9の10通り)+特殊文字 で考えてみてください。 宿題っぽいので答えそのものは書きません。

rider88
質問者

お礼

解説ありがとうございました。

回答No.2

1文字ですよねアスキーコード8Bitで決まっているので、何ビットと言われても最低も、最大も無く8Bitでないと文字が表現できません。7Bit文字や、9Bit文字など存在したらめちゃめちゃです、8Bit=1バイトとかかれていますよね。つまり1バイトで表現できなければ2バイト、3バイトと言う風にするしか無く中途半端な7Bitや9Bitでは、続く文字の処理に困ってしまいます。 2これもJIS、SJis、ECUでバイト数が決まっているので、最低とか、最大とか無いです、文字数が少なければ予備が出来るだけです。

rider88
質問者

お礼

ご指摘ありがとうございました。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

1)合計92文字ですね。   各文字に順に数字をつけていきますと0から91までとなります。   これを2進数で表すと1011011となり、7ビットで良いことになります。 a=0,b=1,c=10,d=11,e=100,・・・ 2)同じく、0から9999までですので、10011100001111で14ビットですね。

rider88
質問者

お礼

解説ありがとうございました。

関連するQ&A

専門家に質問してみよう