われわれは本当に64ビットがもたらす恩恵を理解しているだろうか。本特集では、64ビットに関する基本的な知識から、64ビットプログラミングへの取り組み方やその考え方、注意点をなどを分かりやすく解説していく。
プロセッサPCの世界は4ビットの時代から始まり、Z80に代表される8ビット、8086やMPU68000に代表される16ビット、i386やPentiumに代表される32ビットと常に進化を続けてきました。
そして現在、PCはついに64ビットの領域に入ってきました。この「64ビット化」によって、われわれはいくつかの恩恵を受けられることになりますが、それと同時にプログラミングの考え方も、64ビット化に合わせてある程度柔軟にしていかなければなりません。
これからの64ビットの世界を生き残るプログラマの条件とは何なのでしょうか。本特集では、コンピュータの64ビット化によっていったい何が起こるのか、また64ビットプログラミングへの取り組み方やその考え方、注意点をなるべくわかりやすく説明します。
64ビットとは、具体的にはどのようなものなのでしょうか。本誌の読者層を考えると、ここであらためて説明する必要もないかもしれませんが、確認という意味で少しだけ触れさせてください。
64ビットとは、Fig. 1のようにビット(1または0というコンピュータの最小単位)の数が64個並んでいることをいいます。
この64個の1または0の組み合わせにより表現できる値の幅は、ざっと264ぶんもあることになります。いったいどれだけの桁数があるのか、それぞれのビット数と値をTable 1にまとめてみました。
ビット数 | 値 | 値の範囲(アドレッシングの範囲) | サイズ |
---|---|---|---|
4ビット | 24 | 0 〜 16[0xF] | 16バイト |
8ビット | 28 | -128 〜 +127 0 〜 255[0xFF] |
256バイト |
16ビット | 216 | -32768 〜 +32767 0 〜 65535[0xFFFF] |
64Kバイト |
32ビット | 232 | -2147483648 〜 2147483647 0 〜 4294967295[0xFFFFFFFF] |
4Gバイト |
64ビット | 264 | -9223372036854775808 〜 9223372036854775807 0 〜 18446744073709551615[0xFFFFFFFFFFFFFFFF] |
16Eバイト |
Table 1 ビット数と値の範囲 |
この値の範囲を見比べてみると、64ビットという値がすさまじく大きな値であることがひと目でおわかりいただけるでしょう(ある意味ひと目ではわからないかもしれませんが……)。64ビットでは、表現可能なアドレス範囲は16Eバイト(エクサバイト)になります。
なお、参考までに各値の単位とバイナリ値の比較をTable 2にまとめてみました。ここからも値の大きさがうかがえます。
単位 | 値 | バイナリ値 |
---|---|---|
キロ(K) | 1,000 | 1,024 |
メガ(M) | 1,000,000 | 1,048,576 |
ギガ(G) | 1,000,000,000 | 1,073,741,824 |
テラ(T) | 1,000,000,000,000 | 1,099,511,627,776 |
ペタ(P) | 1,000,000,000,000,000 | 1,125,899,906,842,624 |
エクサ(E) | 1,000,000,000,000,000,000 | 1,152,921,504,606,846,976 |
Table 2 値の単位とバイナリ値 |
Copyright(c)2007 SOFTBANK Creative Inc. All rights reserved.