基礎用語 数値表現
符号付き整数
下記の解説にある「ビット」、「バイト」、2進数および16進数については、解説「2進ビットパターン・論理演算」を参照願います。 符号付き整数とは、CPUアーキテクチャ(基本設計)においては符号付き2進数を指します。基本的な格納単位はバイト(Byte:1バイト)、ワード(Word:2バイト)及びダブルワード(DoubleWord/DWord:4バイト)で、以下の値の範囲となります。 |
10進数 | |
バイト | -128 ~+127 |
ワード | -32,768 ~+32,767 |
ダブルワード | -2,147,483,648~+2,147,483,647 |
符号付き整数は、負の値を格納するために2進ビットパターン上での最上位ビットを「符号ビット」と定め、この最上位ビットが1の場合は負の値としています。そして、最初に最上位ビットが1となる値が負の値の最大値となります。 |
10進数 | 16進数 | 2進数 | |
バイト | -128 | 80 | 10000000 |
ワード | -32,768 | 8000 | 1000000000000000 |
ダブルワード | -2,147,483,648 | 80000000 | 10000000000000000000000000000000 |
この負の値の最大値から、負の値の最小値である-1までの範囲の値を格納できることになります。-1は以下のようになります。 |
10進数 | 16進数 | 2進数 | |
バイト | -1 | FF | 11111111 |
ワード | -1 | FFFF | 1111111111111111 |
ダブルワード | -1 | FFFFFFFF | 11111111111111111111111111111111 |
ちなみに正の数の最大値は以下のようになります。 |
10進数 | 16進数 | 2進数 | |
バイト | +127 | 7F | 01111111 |
ワード | +32,767 | 7FFF | 0111111111111111 |
ダブルワード | +2,147,483,647 | 7FFFFFFF | 01111111111111111111111111111111 |
以上により、正負符号を反転させるには、まず2進ビットパターン上で全ビットをビット反転させ、さらに1を足せばよいということがわかります。これを「2の補数」と呼びます。 |
符号なし整数
符号なし整数には符号ビットの観念はありません。符号なし整数は序数と呼ばれることもあります。 |
10進数 | 16進数 | 2進数 | |
バイト | 0 ~255 | FF | 11111111 |
ワード | 0 ~65,535 | FFFF | 1111111111111111 |
ダブルワード | 0~4,294,967,295 | FFFFFFFF | 11111111111111111111111111111111 |
64ビット整数
整数を64ビット(8バイト)で格納する際の格納単位をQWord(Quad Word:クワッドワード)と呼びます。符号ビットによる符号の表現はByte/Word/DWordと同様です。QWordは、32ビット版のゲームでパラメータやフラグ等の格納に使われることは少ないといえます。 |
10進数最小 | 10進数最大 | |
符号あり | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
符号なし | 0 | 18,446,744,073,709,551,615 |
実数(浮動小数点数)
実数とは、数値と底のべき乗を使用することによる、広範な範囲の符号付き数値を扱うことが可能な数値表現手法を指します。実数の16進数表示は、整数の16進数表示とは仕組みが異なるので注意が必要です。以下の浮動小数点数は、精度が有限であるため厳密には「実数に近いもの」となります。 |
単精度実数 32ビット(4バイト)で表現する浮動小数点数は「単精度実数」と呼ばれ、また、開発言語で使用する変数の型の名前から「Float」とも呼ばれます。 |
正の値 | 負の値 | |
Float | 1.401298x10-45 ~ 3.4028235x1038 | -3.4028235x1038 ~ -1.401298x10-45 |
倍精度実数 64ビット(8バイト)で表現する浮動小数点数は「倍精度実数」と呼ばれ、また、開発言語で使用する変数の型の名前から「Double」とも呼ばれます。 |
正の値 | 負の値 | |
Double | 4.94065645841246544x10-324 ~ 1.79769313486231570x10308 | -1.79769313486231570x10308 ~ -4.94065645841246544x10-324 |