【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

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を見て理解しようと尽くしたりしたのですがよく理解できません。どう質問していいかも分からず文章めちゃくちゃになってしまいましたが。どうか分かりやすい説明をどなたかお願いいたします。

A 回答 (5件)

>32bitマシンは理論的に4GByteまでメモリが管理できるとよく耳にするのですが。

よく分かりません。概念が。

よくわからなくて正解です。
>32bitマシンは理論的に4GByteまでメモリが管理できる。
この表現が間違いで,
32bitマシンは4G個のアドレスをアドレスレジスタで直接管理できる。
というのが少し正しい表現。


32ビットマシンというのは内部レジスタ(特にアドレスレジスタ)が32bitのマシンと言う意味です。
32bitであらわせる数字は4294967296=4G個(これは個数であってバイトでもビットでもありません)。

したがって,もしそのCPUなりOSがアドレスレジスタのひとつの数字に対してメモリ1バイトを示すように設計されている場合には
4G個×1バイト=4ギガバイトのメモリを管理できるということになります。
今時のCPUはアドレスレジスタひとつに対して1バイトなんてもったいないアクセスはしませんので,実際に扱えるメモリーはこの何倍にもなります。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/05/31 10:25

32bitだと、


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

だから、メモリー空間のアドレスを4GB分管理できると言うだけ。


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

64bitのCPUなら2^64個のアドレスを管理できるから、2^64バイト管理できる。
    • good
    • 0

「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枚分」と言うぐらいに変なのです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/31 10:29

> あれでも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 が扱える。

ということなのですが、納得できませんか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/31 10:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報