- 締切済み
ビットとバイト
どうも理解できないので教えて下さい。 32ビットのOSで扱えるメモリは約4GBとなっていますが、なぜ単位はバイトなのでしょうか? 1ビットというのは0か1の2進数ですよね? なので32ビットは2の32乗で約42億となるのはわかります。 これがどうして42億ビットではないのでしょうか? 1バイトは8ビットとのことらしいのでバイトで表記するなら約42億÷8ビットで約5.2億バイト=520メガバイトとなるのではないのでしょうか? 恐ろしく勘違いしてると思うのでどなたか教えて下さいませ。
- みんなの回答 (10)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
本気でど~でもいいことですが.... 「2のべき乗表記には「i」を付けるべしとSI単位系で決められています」って, どこにありましたっけ? 少なくとも SI の第8版にそのような規定はないはずですが. ちなみに SI の第8版には IEC60027-2:2005 で決まっている (正式にはフランス語で CEI 60027-2 と書くべき?) とはあります.
- toshih2000
- ベストアンサー率22% (120/541)
一番重要な事は、コンピュータなんてものは しょせん人間が作り出したものです。 自然の摂理でできたものではありません。 ですから、人間が作る際にどういった構造が良いか 使いやすいかを考えて決めているのです。 ビット単位にアドレスを与えるのと、バイト単位に与えるのと どっちが使いやすいですか? がポイントとなります。 そもそも、32ビットCPU だから アドレス空間は 2^32バイト という事すら、CPUメーカーが決めただけです。
- RandenSai
- ベストアンサー率54% (305/561)
なにげに奥深いテーマですね、これ。 メモリの取り扱いの最小単位がバイトだから32ビットのアドレス信号線でアクセスできる上限が4GB、と言うのはすでに解説されているとおりです。なぜ最小単位がバイトなのかは、ぶっちゃけてしまえば昔からの慣習です。最初期に普及したCPUが8ビットで、それがバイト単位でメモリを扱っていたからです。その後の技術発展でCPUは16ビット→32ビット→64ビットになりましたが、メモリをバイト単位で扱うという慣習は引き継がれました。これには互換性維持の意味合いもあったのでしょう。 慣習と言えば、1バイト=8ビットなのも慣習に過ぎないんですよね。これも最初期に普及したCPUが8ビットだったことの名残です。実は1バイトの厳密な長さを定義する条文は存在せず、SI国際単位系でも触れられていません。ですから1バイト=10ビットの処理系があっても、それは不正でも何でもないんですね。最初期に普及したCPUが12ビットだったら、今頃1バイトは12ビットだったかも知れない。その程度にあいまいなものです。 ただそれだと通信の世界のように、通信料金を決めるデータ量が厳密に表せないことになって困るので、オクテットという単位を使う場合があります。1オクテット=8ビットは不変的定義です。 脱線ついでにもうひとつ。32ビットOSのメモリ空間が4GBになったのも、いちばん普及したCPUであるインテルの80386のアドレスバス幅が32ビットだったから、というのが理由です。正確には32ビットOSというのはアドレスバス幅のことではなく、データ幅のことを言っているのです。たまたま80386のデータ幅とアドラス幅が一致していただけであって、CPUのアドレスバス幅とデータ幅が一致していなければならないといった規格や決まりは一切ありません。 現にインテル製のサーバ用32ビットCPU、Pentium Proではアドレスバスが36ビットあり、メモリ空間は64GBとなります。その後発売されたXeonでもこの発想を引き継いでいます。また今どきの64ビットCPUのアドレスバス幅は64ビットではありません。内部52ビット、実信号幅48ビットです。 と言うわけで、細かく見ていくと4GBと言う数字は慣習の塊から出てきたようなものだ、との結論になりますね。 最後に付け足し。コンピュータの世界では1k=1024(2の10乗)を表すことが慣習になっていますが、世間一般では1k=1000(10の3乗)です。これの混乱を避けるために、2のべき乗表記には「i」を付けるべしとSI単位系で決められています。なのでコンピュータ的4GBは、4GiBと表記するのが正式です。
- Tacosan
- ベストアンサー率23% (3656/15482)
4Gword って言えば納得してくれる? あと余談だけど「32ビットのOSで扱えるメモリは約4GB」って誤解してる人, 本当に多いね.
- yama1718
- ベストアンサー率41% (670/1618)
ちなみにメモリチップでは記憶容量をビットで言う場合もあります。 1バイト(8bit)単位でデータを読み書きするメモリチップもありますが、一度に1ビットの読み書きしかできないメモリチップもあり、これを複数(8,16,32,64個)並列に使ってメモリモジュールを構成したりします。 その場合はメモリチップを単品で見たら1ビット単位でしか読み書きできないので、記憶容量をバイトで表記するのはおかしいとも言えます。 (記憶装置全体やメモリモジュールとしてはバイト単位で表記する事が多いですね) 他にゲーム機などはビットで表すと数値が大きくなり高性能に見えるのでそうしている例もあります。
- koujikuu
- ベストアンサー率43% (429/993)
32ビットのコンピュータでも最小入出力単位が1バイト(8ビット)単位です (1ビットの変更でもい1バイト読み出し1ビット変更して1バイト書き込みが必要です) コンピュータの世界では、1K=1024=2^10 で計算します 4GB=4096MB=4194304KB=4294967296Byte=34359738368bit 4Gのアドレスがあり、ひとつに1バイトのデータが記憶出るため、メモリ容量4GBと表します。
- teppou
- ベストアンサー率46% (356/766)
ビットというのは、二進の桁数のこと。 バイトというのは、データ数の単位と考えればわかりやすいかと。 32ビットOSというのは、32ビットCPUで動作させるように作られたOSという意味です。 32ビットCPUというのは、32ビット(8バイト)のデータを同時に操作できるCPUです。 それと別に、4GBのメモリというのは、文字通り4GBのデータを格納できるメモリです。 データ数が4GBのメモリにアクセスするには、4Gビットのアドレスが必要です。 4Gビットのアドレスを出力するには、32ビットの桁が必要です。 上の二つは、別のことで、それぞれ32ビットのデータバス、32ビットのアドレスバスといいます。 ようするにCPUから32本の電線の束が二組出ていて、それぞれデータの入出力とアドレスの指定を行っています。 かなり大雑把な、ごく初歩的説明です。
- DarkMoon
- ベストアンサー率21% (225/1046)
ITパスポートか基本情報処理技術者試験を受験する方向けの 説明になりますがご容赦ください。 ビットは情報量(桁数)の単位です。 1ビットは 0 or 1 の情報しか持っていません。 2ビットは 00(0) or 01(1) or 10(2) or 11(3) のいずれかの情報を持っています。 3ビット、4ビット…と01の数字の羅列を伸ばしていくと人間にはとても読みづらいものになります。 そこで、8ビットを1バイトと定義することで、簡便に数を把握できるようにしました。 8ビットは、10進数表記で0~255の数を表すことが出来ます。 16進数表記でしたら「0~FF」です。 情報工学を勉強すれば分かってきますがこれは、キリが良い数なんです。 >1バイトは8ビットとのことらしいのでバイトで表記するなら >約42億÷8ビットで約5.2億バイト=520メガバイト ここが勘違いの元です。 2^32=4294967296(ビット)→ 4,293,967,296項目のメモリアドレス メモリアドレスは一項目あたり1バイトの容量を持つ すなわち、扱えるメモリは約4.3GBです。
- jusimatsu
- ベストアンサー率11% (171/1438)
この場合は、数字をカウント(表現)できるカウンターの桁数が2進数32桁と了解してください。
- IDii24
- ベストアンサー率24% (1597/6506)
単位を勘違いしているのでは?ビットはスイッチを一個格納出来る単位であり、数値を格納する単位ではありません。 1ビットは一個のスイッチ、32ビットは32個のスイッチと考えれば理解できるのでは?8個のスイッチで1バイトという単位に繰り上がるだけですね。