• ベストアンサー

バイトアドレッシングによる必要ビット数

32MBバイトのコンピュータにおいてバイトアドレッシングの場合何ビット必要かと質問があります。 私の計算は 32×1048576(1MB)を2進化させました。 結果は 10000000000000000000000000 になり26ビットですが、なぜ25ビットになるのでしょうか? 1バイト目は0で表現する為に、 ( 32×1048576 ) -1 ↑の結果を2進化する必要があったのでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

お書きの通りです。 メモリの先頭を1番地とすると、最後は32×1048576番地となり最大アドレス10...00(26bit)ですが、0番地が無駄に空いてしまいます。 メモリの先頭を0番地とすると、最後は32×1048576-1番地で、11...11(25bit)です。 また、メモリチップ自体や周辺の回路も、0番地始まりを前提に作られています。

noname#229108
質問者

お礼

ありがとうございます!よくわかりました!

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

主記憶容量256バイトのコンピュータを仮定した場合, (ちなみに10進数の256は,2進数で100000000という9bit長データ) そのアドレスは 00000000 (0番地) から 11111111 (255番地) という8bit長アドレスで示せるから。 ということで,回答No.1と同じです。 -------- 次に挙げる概算の関係より, 2の30乗 ≒ 10の9乗 = G(ギガ) 2の20乗 ≒ 10の6乗 = M(メガ) 2の10乗 ≒ 10の3乗 = k(キロ) 32M = 32×M ≒ (2の5乗)×(2の20乗) = 2の25乗

noname#229108
質問者

お礼

ありがとうございます!よくわかりました!

関連するQ&A