• ベストアンサー

32bit = 4GB(バイト)?

32bit = 4GB(バイト) という表現をよく見るのですが 32bit = 10bit(1Kbit) X 10bit(1Kbit) X 10bit(1Kbit) X 4bit = 1Gbit X 4bit = 4Gbit(ビット)ではないでしょうか? なぜ4GB(バイト)になるか分かりません。教えてください

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

  • ベストアンサー
  • kabasan
  • ベストアンサー率44% (264/588)
回答No.8

アドレッシングってご存知ですか? 32bitの変数で表現できる数字は10進数で0~4,294,967,295です。 この数字を住所の番地だと思ってください。 1番地に1バイトを格納できるとすれば、4,294,967,296バイト(=4GB)の集合の中の 任意の1バイトを指定することが出来ます。(1アドレス1バイトの系の場合) つまり「アドレスのビット幅が32bitあれば、4GBを扱うことができる」と言う事を示しています。

taurus4
質問者

お礼

アドレッシング、知りませんでした。 すみません、私も質問している内容が意味不明でした。。 ですが、本来質問したかった問題もアドレッシングという概念で解決しました。ありがとうございました。

その他の回答 (8)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.9

今どき普通の CPU では 1Byte 単位でアドレスを与えていて, そのアドレスを 32bit で指定するから 4GByte, といっているんだろうなぁ. もちろん既に紹介された URL にあるように, 「32bit だから 4GB までしか使えない」なんてことは全然ありません. 努力と根性があれば 4GB を越えるメモリを使うことも可能です. 実際, いくつかのデータベースで 4GB を越えるメモリを使えるようにしているものがあるはずです. もちろん, そのためには CPU が 4GB を越える物理メモリにアクセスできるようになっていないと泣きそうなことになります. 例えば Intel の歴史でいうと, CPU 自体が 32bit になったのは 386 のときで, このときは CPU から出るアドレス線が 30本しかないので物理メモリは 4GB でした (4Byte 単位でアクセスするので 2本省略されています). これが PentiumPro になるとアドレス線が 33本になって (8Byte 単位でアクセスするため 3本省略することができて) 64GB まで物理メモリとして持てるようになります... まあ, PentiumPro の時代で 4GB なんていうのははるかかなたですけどね. 去年末くらいまで PentiumIII で 6GB メモリってやってましたので, 絶対可能です (Linux を使っていたので 1プロセスで 2GB までしかユーザは使えないのだが, 6GB の物理メモリを無理矢理使いきったことはある).

taurus4
質問者

お礼

> 今どき普通の CPU では 1Byte 単位でアドレスを与えていて, そのアドレスを 32bit で指定するから 4GByte, といっているんだろうなぁ. 私が見たのも、たぶんそういう事だったんだろうと思います。

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.7

少々奇々怪々な文面があちこちでとんでいるようですが^^; まず、第一に32bitを等号で結んで最終的に4Gbitにしておられますが、 32bit=4Gbitはさすがにおかしいですが、 さりとて何を言いたいのかもさっぱり見当がつきません。 もし、以下の回答で納得がいかなければ補足してもらえますか。 32bitは情報量の単位でして実際の扱える範囲は2のべき乗で与えられます。 32bitですから2^32。これを計算すると4Gバイトになります。 なお、バイトの単位ですが、2^10を1Kバイトとすると 2^20で1M、2^30で1Gバイトになります。 1000バイトを1K、1000000を1Mと10進数を基本にして計算する場合もあり、 こちらのスタイルだと約4Gとなります。

taurus4
質問者

お礼

> さりとて何を言いたいのかもさっぱり見当がつきません。 申し訳ありませんでした。 > 32bitですから2^32。これを計算すると4Gバイトになります。 ここには、アドレッシングという概念が暗黙に考慮されているという事だったんですね

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.6

>32bit = 4GB(バイト) という表現をよく見るのですが これって既存32bitOSが管理できる最大メモリー領域のことではないの? といっても最初の設計が4GBだったからであって、設計さえ しなおせば、もっと広大な空間が管理できるんだけど。 大抵設計段階ではメモリーの価格が高くて、当時4GBも購入する人は皆無だろうからこれ以上使うことは無いと 踏んで設計しちゃうからなのだ。 http://mag.autumn.org/Content.modf?id=20050119154552

taurus4
質問者

お礼

> これって既存32bitOSが管理できる最大メモリー領域のことではないの? そんな高度な質問ではありませんでした。 アドレッシングという概念を分かっていませんでした。

回答No.5

歴史的に、一つのアドレスで指定するデータのバス幅は8bit(1バイト)であると暗黙に仮定されているからです。 たとえば、最近の64bit CPUは64bit(8バイト)のデータバス幅を持ちますので、一つのアドレスで8バイトのデータにアクセスできますが、アドレス線の最下位ビットは「A3」と名づけられており、「A0」~「A2」の3本の信号線は存在しません。この場合、33本のアドレス信号線しかないにもかかわらず、物理アドレス空間は36bit x 8bit = 64Gバイトとなります。

taurus4
質問者

お礼

> 歴史的に、一つのアドレスで指定するデータのバス幅は8bit(1バイト)であると暗黙に仮定されているからです。 そうだったんですね。勉強になりました・

noname#96023
noname#96023
回答No.4

こんな話と勘違いしてるのでは http://mag.autumn.org/Content.modf?id=20050119154552

taurus4
質問者

お礼

アドレッシングという概念を理解していなかったので、仰るような高度な勘違いではなかったのですが、、、質問がとんちんかんですみませんでした。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.3

32bitマシンのメモリアドレスのことかな。 普通、メモリアドレスの1つの番地は1バイトを表しますから、 ポインタが32bitあれば、 2^32 = 4294967296 で4GByteのメモリを管理できます。

taurus4
質問者

お礼

すみません、私の質問している内容が意味不明でしたが、 >普通、メモリアドレスの1つの番地は1バイトを表しますから、 この、アドレッシングという概念で解決しました。ありがとうございました。

  • Interest
  • ベストアンサー率31% (207/659)
回答No.2

> 32bit = 4GB(バイト) という表現をよく見るのですが いえ、見たことがありません。 bit というのは 0か1しか情報を持たない単位です。 8bitをまとめて 1Byteといいます。 1024Byte = 1KB (Killo Byte)です。 1024KB = 1MB (Mega Byte) 1024MB = 1GB (Giga Byte) 1024GB = 1TB (Tera Byte) です。1024 = 2の10乗です。 32bit = 4 * 8 bit = 4 Byte ならわかります。

taurus4
質問者

お礼

> 32bit = 4 * 8 bit = 4 Byte > ならわかります。 確かにそのとおりですね。すみません、私も質問している内容が意味不明でした。。 ですが、本来質問したかった問題もアドレッシングという概念で解決しました。ありがとうございました。

  • char2nd
  • ベストアンサー率34% (2685/7757)
回答No.1

 1B=8bit です。32bitなら4Bにしかなりませんが、32Gbitでは?  32Gbitなら4GBです。 http://e-words.jp/w/E38390E382A4E38388.html

taurus4
質問者

お礼

仰るとおり、私の質問している内容が意味不明でした。。 ですが、本来質問したかった問題もアドレッシングという概念で解決しました。すみませんでした。

関連するQ&A