• ベストアンサー

32bit = 4GB(バイト)?

32bitマシンは理論的に4GByteまでメモリが管理できるとよく耳にするのですが。よく分かりません。概念が。 2^32 = 4294967296で4GByteのメモリを管理でる? えっと2^8つまり8bit=1byteなら32bitで4byteなのではないのでしょうか? あれでも32bitつまり2^32=4,294,967,296通りで1byte=256通りだからbyteに直すと16777216byteでさらにkbyteにすると16384kbyteでmbyteになおすと16mbyteになるの? ん?  あれ4GByteにならないじゃんって…… ちょっと頭が相当重症にこんがらっています。 一応ここhttp://okwave.jp/qa3063088.htmlを見て理解しようと尽くしたりしたのですがよく理解できません。どう質問していいかも分からず文章めちゃくちゃになってしまいましたが。どうか分かりやすい説明をどなたかお願いいたします。

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

  • ベストアンサー
  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.4

>32bitマシンは理論的に4GByteまでメモリが管理できるとよく耳にするのですが。よく分かりません。概念が。 よくわからなくて正解です。 >32bitマシンは理論的に4GByteまでメモリが管理できる。 この表現が間違いで, 32bitマシンは4G個のアドレスをアドレスレジスタで直接管理できる。 というのが少し正しい表現。 32ビットマシンというのは内部レジスタ(特にアドレスレジスタ)が32bitのマシンと言う意味です。 32bitであらわせる数字は4294967296=4G個(これは個数であってバイトでもビットでもありません)。 したがって,もしそのCPUなりOSがアドレスレジスタのひとつの数字に対してメモリ1バイトを示すように設計されている場合には 4G個×1バイト=4ギガバイトのメモリを管理できるということになります。 今時のCPUはアドレスレジスタひとつに対して1バイトなんてもったいないアクセスはしませんので,実際に扱えるメモリーはこの何倍にもなります。

eruketeiso
質問者

お礼

>32bitマシンは4G個のアドレスをアドレスレジスタで直接管理できる。 この表現で要約理解できました。 本当にありがとうございました。

その他の回答 (4)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

32bitだと、 2^32 = 4294967296個の区別ができるといっているのです。メモリにこれだけの番地がつけられるということです。メモリの構成とは別です。 8部屋ずつの建物が4294967296棟あれば、0番地から4294967295番地まで番地をつけられるということです。いいかえれば、それぞれの番地にたどり着く道が用意されているということです。この道と部屋数とは直接関係はないのですが、歴史的に8部屋の家にしたということでしょう。 アクセス単位が8bit=1byteのメモリで4GBを構成するなら、94967295 * 8bitのメモリセルが必要です。上の例の総部屋数に相当します。

noname#61010
noname#61010
回答No.3

だから、メモリー空間のアドレスを4GB分管理できると言うだけ。 かなり簡単に言うと、メモリー空間は1バイトごとに1つのアドレスを持っている。2^32個のアドレスを管理できる。よって4GB分管理できる。 64bitのCPUなら2^64個のアドレスを管理できるから、2^64バイト管理できる。

  • u-bot
  • ベストアンサー率58% (1736/2988)
回答No.2

「2^32 = 4294967296で4GByteのメモリを管理でる」 の考えで合っています。 32ビットあれば4GBの空間にユニークなアドレス(個別の番地)を割り振れるから管理できるわけです。 「あれでも32bitつまり2^32=4,294,967,296通りで・・・16mbyteになるの?」 計算自体は間違っていませんが、最後の16MByteは管理できるメモリ容量を示しているわけではないのです。 Byte単位に変換するからメモリ容量のように誤解されているだけです。 1Byteが表現するアドレスは256個ですから、16MBx256=4GB通りとなり、結局4GBのアドレスを表現できる結論となります。 問題は文章中の「1byte=256通りだからbyteに直すと」の部分です。 「通り」を「Byte」という単位に変換するのがおかしいのです。 例えていうなら「1000通り」を「千円札1枚分」と言うぐらいに変なのです。

eruketeiso
質問者

お礼

>「通り」を「Byte」という単位に変換するのがおかしいのです。 確かにそうですね。 要約理解できました。 ご回答ありがとうございます。

  • kaZho_em
  • ベストアンサー率50% (2950/5879)
回答No.1

> あれでも32bitつまり2^32=4,294,967,296通りで ここまでは良い。この後は余計な事考えすぎ。 4,294,967,296通りというのは、4,294,967,296個の番地が表せるという事。 1個の番地で1バイトを扱うので、4,294,967,296バイトに番地を割り振れる、 つまり 4,294,967,296バイト=4GB が扱える。 ということなのですが、納得できませんか?

eruketeiso
質問者

お礼

要約分かりました。なんか大きな勘違いをしていたみたいです。 回答ありがとうございました。

関連するQ&A