プログラミング用語を段階的に定義(2) 『メモリ』
[ PR ]
コンピュータで非常に重要な役割を担うのがメモリです。
C言語などの低レイヤー言語を扱うときは特に重要になるので押さえておきたいところです。
定義
ハードディスクなどに比べ高速で動作するため、主に演算・計算のために使われる。
メモリは一般に、電源を切るとデータが失われる。』
メモリは、下の写真のように横長いパーツで、回路の集まりのように見えます。
ノートパソコンだとパソコンの裏面にあることが多く、上記の写真より小さいのが特徴です。
ちなみに、USBメモリやフラッシュメモリとは全く違うものです。USBメモリは電源を切ってもデータが残り、通信速度は遅いです。
アドレス
1ビットは2進数の1桁(0または1)で、1バイト=8ビットです(例:10010010)。
メモリのアドレスを図にすると次のような感じです。データがないアドレスもあります。
例えばこの例の場合は、106番地のデータは01000010ということになります。
複数アドレスの扱い
http://www.ced.is.utsunomiya-u.ac.jp/lecture/2012/prog/p2/kadai1/2.htmlにわかりやすい図があったので紹介します。
この図は、文字の配列がどのようにメモリに保存されるかを示した図です。
最後に\0(空文字)があるのは終わりを示すためです。
実際に配列はこのようにメモリに保存されます(C言語の構造体なども同様です)。
日本語文字について
日本語文字の保存については http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp06_GetPrivateProfileString.html にわかりやすい図がありました。
これはもちろんイメージ図ですが、日本語は1バイトではなく2バイトで表現されるので、1バイトずつアドレスが割り当てられるためこのようなイメージになります。
整数や小数を表す
http://www.akita-nct.ac.jp/~yamamoto/lecture/2006/5E/C/5_pointer_html/node2.htmlの図を使って説明します。
例えば整数の3は、2進数で表すと11になります。つまり1バイト未満なのでアドレスは1つでいいのでは・・・?
実は、整数や小数の扱いを効率的にするために、データに合わせた最大のビット数を事前に決めています。
この数というのは、CPUが1度で読み取れる数に等しいことが多く、32ビットCPUでは32ビット、64ビットCPUでは64ビットとなります(必ずしもこうなるとは限りませんが)。
ですので、この例では整数を表すビット数は小数を表すビット数よりも小さいということになります。
まとめ
メモリについては、これぐらい知識があれば十分実用的だと思います。
プログラミング言語の種類およびデータ型によってメモリ配置が変わってくるので、あとは必要に応じて勉強すればいいと思います。
毎日コミュニケーションズ
売り上げランキング: 401,172