• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンピュータにおけるメモリアドレス)

コンピュータにおけるメモリアドレスとは?

このQ&Aのポイント
  • コンピュータのメモリアドレスについて疑問があります。なぜアドレス範囲は2^32-1(4294967295)になるのでしょうか?特に-1となる理由がわかりません。
  • 私のPCのシステムが「64ビット オペレーティングシステム、×64ベースプロセッサ」と表示されます。これはどういう意味ですか?
  • コンピュータのアーキテクチャはワード長として表現され、32ビットや64ビットなどが一般的です。これはコンピュータが処理できる最大値を指し、メモリのサイズにも制限があります。32ビットコンピュータのアドレス範囲は0から4294967295までであり、4ギビバイトのメモリを使用できます。一方、64ビットのシステムはより大きなアドレス範囲を持ち、より大容量のメモリを扱うことができます。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

(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%E6%95%B0 十進数以外の数字の表現と、十進数との変換方法は中学校の数学で習うと思います。 (2) CPUが64bitモードで動いており、64bitモードに対応したWindowsOSだということです。 (1)の内容を32のかわりに64で読み替えてください。つまり0~2^64-1の範囲のアドレスが使えます。

GTO001
質問者

お礼

notnotさん、回答ありがとうございます。 2進数は、理解していたつもりだったのですが、0の存在を忘れて いました。分かりやすい回答ありがとうございました。 あと、【質問2】の内容についてアドレスビット幅が64ビットで、データ幅も64ビットにになるのでしょうか? 宜しければ、ご教示の程お願いいたします。

その他の回答 (4)

回答No.5

身近な例で例えると、例えば10進数。 普段、当たり前のように使っています。 0~9の『10』種類の数があり、9の次を表そうとすると一桁では表せないので、「桁の繰り上がり」が起きます。 同様に、n進数の場合、 ・0~(n-1)のn種類の数があり、(n-1)の次を・・・・(以下、上と同様) となります。 ご質問の件についても、考え方は同様です。 32ビットの場合、 0~(2^32-1)の2^32種類のアドレスがあり、・・・ となります。 簡単に言ってしまえば、「0」という数字の存在の不思議さ、になるのでしょう。。。

GTO001
質問者

お礼

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

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.4

【質問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ビットのプロセッサの力を利用出来ます。

GTO001
質問者

お礼

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

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.3

>物理メモリのサイズもこのワード長に制限される。 それは違います。 アーキテクチャのビット数とはデータバスの幅の事を言います。 最大メモリ容量に関するのはアドレスバスの幅なので、この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の時よりもメモリが必要な時代なので、 より大容量のメモリをフルに使える設計になっています。

GTO001
質問者

お礼

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

回答No.2

まずは【質問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自体は一般販売されておらず、メーカーに提供(販売)されるだけのため 個人で所持しているのは、よほどのマニアかコレクターぐらいでしょう。

GTO001
質問者

お礼

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

関連するQ&A

専門家に質問してみよう