電子書籍の厳選無料作品が豊富!

こんにちは。

今回は基本的なことを伺います。
とあるサイトで下記の記事を見つけました。

32bitは2の32乗で約43億通りの組み合わせて表現できる。
サイズは4Gバイトとなる。
近年のメモリーは限界容量の4Gバイトにまで達しており、64bitコンピューティングへの普及が進んでいる。

ここで疑問なのですが、私は8bitは1バイトということが頭から離れず、
32bitは32×4の128バイトでない理由を知りたいと思います。
これがなぜ4Gバイトなのでしょう?

初歩的なことで申し訳ございませんが、よろしくお願いします。

A 回答 (5件)

>これがなぜ4Gバイトなのでしょう?



すでに、質問分の中に書いてあります。
>32bitは2の32乗で約43億通りの組み合わせて表現できる。
からです。

>32bitは32×4の128バイト
は間違いではありませんが、「128バイト」というのは「メモリサイズ」という「数値」を扱う為の「入れ物の大きさ」になります。
ここで扱える数値が約43億なので4Gバイトのメモリを利用できるということになります。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という
ことは知りませんでした。

これでなぜ4Gバイトになるのか理解できました。

お礼日時:2010/01/06 17:13

>32bitは32×4の128バイト



32(アドレス)x4(=32/8:データ)
ですか?考え方はいいのですが、計算方法が違っています。

メモリには1単位毎(ここでは「単位」としておきます)に番号(アドレスと呼びます)が振ってあります。あるメモリの内容を知りたい、内容を書き換えたい、というときは、その番号を指定します。
その番号を何bit使うか(幅と呼びます)、で32bit,64bitといっています。
(今回はメモリの話なので、アドレス幅だけで話を進めます。細かいことを言うとややこしいので。例えば、8bitCPUでもアドレスは16bitだったりします)

使用できるアドレスは
1bitなら2通り 0,1
2bitなら4通り 00,01,10,11
3bitなら8通り 000,001,010,011,100,101,110,111
...と、1bit増えるごとに2倍ずつ増えます。
32bitでは2の32乗で約43億通り(4G)..というのはご質問にある通りです。


そこで、1アドレスを割り当てる単位なのですが。
32bitなのだから、32bit(=4byte)毎にすれば 4Gアドレス x 4Byte=16GB という考え方もあります。
が、現在一番使われているCPUが1byte毎にアドレスを振っているので、 4Gアドレス x 1Byte=4GBが最大となります。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という
ことは知りませんでした。

これでなぜ4Gバイトになるのか理解できました。

文字の世界(半角文字は1バイト,8bit)しか知りませんでした。
それで32bitは32×4の128バイト、と計算してしまいました。

お礼日時:2010/01/06 17:18

32ビットで表現できるメモリアドレス空間が4Gバイトなのです。



【メモリマップ図】
      ↓8ビット=1バイト
0番地……00000000
1番地……00000000
2番地……00000000


2の32乗-1番地……00000000

2の32乗-1=4294967295

CPUが直接アクセスできるメモリ空間が32ビットで表現されるということは、最大メモリアドレスは「2の32乗マイナス1」となります。だから、メモリは0番地から4294967295番地まであることになり、1番地につき1バイト記憶できるので、メモリサイズは4Gバイトとなります。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という
ことは知りませんでした。

これでなぜ4Gバイトになるのか理解できました。

お礼日時:2010/01/06 17:11

32bit の2進数で 0~4,294,967,295 の数値が表現できるとして,それがなぜ 4Gビットではなくて 4Gバイトなのか,というお話ですね?



アドレスとデータの関係を関係はご存じでしょうか?
メモリはアドレスを与えることで個々のデータにアクセスできることを思い出してください.つまり,メモリのサイズは「アドレスの総量 x 個々のデータサイズ」となります.

CPUによりますが,IntelのCPUは「バイトアドレッシング」と呼ばれる方式を取っています.これはつまりメモリの個々のデータサイズが 1バイト であることを示しています.

結局,IntelのCPUで32bitのアドレス範囲(総量)を持つ場合,メモリの総量は,

4,294,967,296 x 1バイト = 4G バイト

となります.

==
蛇足ですが,ほかにもCPUによっては「ワードアドレッシング」などを採用している物もあり,これはつまりメモリの個々のデータサイズが 4バイト であるようなCPUですが,もしそんなCPUの場合は32bitコンピューティングであったとしてもメモリの総量は

4,294,967,296 x 4バイト = 16G バイト

となります.
32bitコンピュータだからといって,必ずメモリの最大が4Gバイトというわけではありません.
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という
ことは知りませんでした。

これでなぜ4Gバイトになるのか理解できました。

お礼日時:2010/01/06 17:11

メモリにアクセスする時に メモリのアドレスを指定してアクセスします。


1バイト単位で 0番地のメモリ  1番地のメモリ という風に (実際は32ビットOSの場合は 一度に 4バイト単位で アクセスしてますが ちょっと置いといて)
32ビット 2の32乗 で 表現できる番地の範囲が 0 ~ 4294967295 であるので 4294967296 B(バイト) のメモリを使用することが出来るということになります。
4294967296 B = 4194304 KB = 4096 MB = 4GB
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という
ことは知りませんでした。

これでなぜ4Gバイトになるのか理解できました。

お礼日時:2010/01/06 17:12

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