• ベストアンサー

32bitコンピューティングについて

こんにちは。 今回は基本的なことを伺います。 とあるサイトで下記の記事を見つけました。 32bitは2の32乗で約43億通りの組み合わせて表現できる。 サイズは4Gバイトとなる。 近年のメモリーは限界容量の4Gバイトにまで達しており、64bitコンピューティングへの普及が進んでいる。 ここで疑問なのですが、私は8bitは1バイトということが頭から離れず、 32bitは32×4の128バイトでない理由を知りたいと思います。 これがなぜ4Gバイトなのでしょう? 初歩的なことで申し訳ございませんが、よろしくお願いします。

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

  • ベストアンサー
回答No.1

>これがなぜ4Gバイトなのでしょう? すでに、質問分の中に書いてあります。 >32bitは2の32乗で約43億通りの組み合わせて表現できる。 からです。 >32bitは32×4の128バイト は間違いではありませんが、「128バイト」というのは「メモリサイズ」という「数値」を扱う為の「入れ物の大きさ」になります。 ここで扱える数値が約43億なので4Gバイトのメモリを利用できるということになります。

YT0925
質問者

お礼

どうもありがとうございました。 メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という ことは知りませんでした。 これでなぜ4Gバイトになるのか理解できました。

その他の回答 (4)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

>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が最大となります。

YT0925
質問者

お礼

どうもありがとうございました。 メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という ことは知りませんでした。 これでなぜ4Gバイトになるのか理解できました。 文字の世界(半角文字は1バイト,8bit)しか知りませんでした。 それで32bitは32×4の128バイト、と計算してしまいました。

  • digitalian
  • ベストアンサー率29% (323/1104)
回答No.4

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バイトとなります。

YT0925
質問者

お礼

どうもありがとうございました。 メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という ことは知りませんでした。 これでなぜ4Gバイトになるのか理解できました。

回答No.3

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バイトというわけではありません.

YT0925
質問者

お礼

どうもありがとうございました。 メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という ことは知りませんでした。 これでなぜ4Gバイトになるのか理解できました。

  • shinh
  • ベストアンサー率39% (363/926)
回答No.2

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

YT0925
質問者

お礼

どうもありがとうございました。 メモリーのアドレス空間と番地(1番地につき1バイト記憶可能)という ことは知りませんでした。 これでなぜ4Gバイトになるのか理解できました。

関連するQ&A