dポイントプレゼントキャンペーン実施中!

【質問1】

 以下、『』に記す内容について、使用できるアドレス範囲は、なぜ、2^{32}-1になるのか
 理解できません。特に、-1となるのが分かりません。
 ご教示頂ける方がいましたら、ご教示の程、宜しくお願い致します。

 『コンピュータ・アーキテクチャは、単に32ビットとか64ビットなどと表現されることがある。
 これは例えば32ビットアーキテクチャのコンピュータが処理できる数の最大値が32ビットで
 表現できることを意味する。これを「ワード長」と呼ぶ。コンピュータが利用できる物理メモリの
 サイズもこのワード長に制限される。32ビットコンピュータが使用できるアドレスの範囲は 0 から
 4294967295 (2^{32}-1) であり、4ギビバイトのメモリを使用できる。』

【質問2】
 私の私有PCで、システムの種類:「64ビット オペレーティングシステム、×64ベース
 プロセッサ」と表示されます。これは、どういうなのでしょうか?
 ご教示頂ける方がいましたら、ご教示の程、宜しくお願いいたします。

A 回答 (5件)

(1) 二進数32桁で表現できるのが、0から2^32-1までの範囲だからです。


表現できる最小の数字は0が32個並んだ表現(=0)。
表現できる最大の数字は1が32個並んだ表現(=2^31+2^30+2^29+・・・+2^2+2^0=2^32-1)

もしかして、二進数ということの意味がわからないのでしょうか。このあたりを見てください。
http://ja.wikipedia.org/wiki/%E4%BA%8C%E9%80%B2% …
十進数以外の数字の表現と、十進数との変換方法は中学校の数学で習うと思います。

(2) CPUが64bitモードで動いており、64bitモードに対応したWindowsOSだということです。
(1)の内容を32のかわりに64で読み替えてください。つまり0~2^64-1の範囲のアドレスが使えます。
    • good
    • 0
この回答へのお礼

notnotさん、回答ありがとうございます。
2進数は、理解していたつもりだったのですが、0の存在を忘れて
いました。分かりやすい回答ありがとうございました。

あと、【質問2】の内容についてアドレスビット幅が64ビットで、データ幅も64ビットにになるのでしょうか?
宜しければ、ご教示の程お願いいたします。

お礼日時:2013/05/20 14:40

身近な例で例えると、例えば10進数。



普段、当たり前のように使っています。

0~9の『10』種類の数があり、9の次を表そうとすると一桁では表せないので、「桁の繰り上がり」が起きます。

同様に、n進数の場合、
・0~(n-1)のn種類の数があり、(n-1)の次を・・・・(以下、上と同様)
となります。

ご質問の件についても、考え方は同様です。

32ビットの場合、
0~(2^32-1)の2^32種類のアドレスがあり、・・・
となります。

簡単に言ってしまえば、「0」という数字の存在の不思議さ、になるのでしょう。。。
    • good
    • 0
この回答へのお礼

kuma310minさん、分かりやすい回答ありがとうございます。
理解できました。

お礼日時:2013/05/20 14:28

【質問1】


 一般的には数は1から数え始めますが、コンピュータの世界では0から数えます。
10本の指で1から数えると10まで数えられます。
しかし0から数えると9までしか数えられません。
なので10本の指の10-1までということです。
0に一つ取られるわけです。

【質問2】
 コンピュータのCPU、中央処理装置と言われます、では計算などが行われていますが、常に一定のデータ量で計算します。
数が1でも2でも常に64ビットで値を持ちます。
この一定のデータ量が64ビットのCPUがx64ベース プロセッサ(CPU)です。
過去には4ビット、6ビット、8ビット、16ビット、32ビットなどがあります。
この数字が大きい程、性能的に有利です。大きな数値でも一度に計算ができます。

大は小を兼ね、64ビットのCPUは32ビットの計算のみも可能です。
64ビットプロセッサに32ビットのオペレーティングシステムを搭載したら32ビットしか使いません。
64ビットのオペレーティングシステムを使うことにより、64ビットのプロセッサの力を利用出来ます。
    • good
    • 0
この回答へのお礼

Tsuke22さん、回答ありがとうございます。
色々情報を記載して頂き、参考なりました。

お礼日時:2013/05/20 22:35

>物理メモリのサイズもこのワード長に制限される。


それは違います。
アーキテクチャのビット数とはデータバスの幅の事を言います。
最大メモリ容量に関するのはアドレスバスの幅なので、この2つは必ず同じではありません。

例えば昔々の8ビットCPUは 8^2-1=255バイトしかメモリが使えない事ではなく、
アドレスバスは16ビットだったので 16^2-1=65534 64KBのメモリが使えましたし、
それ以上のメモリを使える仕組みも色々とありました。

一昔前の32ビットCPUだってアドレスバスが64ビットある物もあります。
ただし当時はコストとそんなに大容量のメモリが必要なかったので、
64ビットの理論上の最大16PB(ペタバイト)が使えず数GBしか使えない設計でした。

64ビットCPUならデータバスは64ビットでアドレスバスも64ビットですね。
ただし、32ビットCPUの時よりもメモリが必要な時代なので、
より大容量のメモリをフルに使える設計になっています。
    • good
    • 0
この回答へのお礼

yama1718さん、回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2013/05/20 18:43

まずは【質問1】の方から


32ビットなんで、2進数で表すと1が32個並ぶのはわかりますよね。
(1111 1111 1111 1111 1111 1111 1111 1111)
それを10進数で表すと 4,294,967,295 になりますよね。
なぜ-1となるのかってのは、2^32 だと 4,294,967,296 になってしまいます。
これでは桁上がりしてしまって、メモリオーバーフローとなってしまいます。


【質問2】
64ビットOS x68ベース ってのは
CPU,マザーボード,OS等 すべて64ビット対応となっているってことです。
Windowsパソコンだとx32,x64 の2種類あります。
x32は32ビット、x64は64ビットだと考えればわかりやすいですね。

「かなり余談的は補足」
WindowsパソコンでIA64という物もありますが、これはIntel Itanium CPUを搭載しているパソコンです。
パソコンというより、業務用サーバとして販売されています。
ItaniumのCPU自体は一般販売されておらず、メーカーに提供(販売)されるだけのため
個人で所持しているのは、よほどのマニアかコレクターぐらいでしょう。
    • good
    • 0
この回答へのお礼

airhead-no1さん、回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2013/05/20 18:45

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