-2, -1, 0, 1, 2, ... など小数点を持たない数を 整数(integer)と呼びます。プラスマイナスの符号を持たない 符号なし整数(unsigned integer) と 符号を持つ 符号付き整数(signed integer) に分類されます。
8ビットで 0~255 の数値を表します。
00000000 : 0 00000001 : 1 00000010 : 2 11111111 : 255
先頭の1ビットで符号(0は正数、1は負数)を、残りの7ビットで絶対値を表します。負数の場合は2の補数で表します。-127~128 の数値を表現できます。
0|0000000 : 0 0|0000001 : 1 0|0000010 : 2 0|1111111 : 127 1|1111111 : -1 1|1111110 : -2 1|0000000 : -128
16ビットで 0~65535 の数値を表します。
00000000 00000000 : 0 00000000 00000001 : 1 00000000 00000010 : 2 11111111 11111111 : 65535
先頭の1ビットで符号(0は正数、1は負数)を、残りの15ビットで絶対値を表します。負数の場合は2の補数で表します。-32768~32767 の数値を表現できます。
0|0000000 00000000 : 0 0|0000000 00000001 : 1 0|0000000 00000010 : 2 0|1111111 11111111 : 32767 1|1111111 11111111 : -1 1|1111111 11111110 : -2 1|0000000 00000000 : -32768
32ビットで 0~4,294,967,295 (約43億)の数値を表します。
00000000 00000000 00000000 00000000 : 0 00000000 00000000 00000000 00000001 : 1 00000000 00000000 00000000 00000010 : 2 11111111 11111111 11111111 11111111 : 4,294,967,295
先頭の1ビットで符号(0は正数、1は負数)を、残りの31ビットで絶対値を表します。負数の場合は2の補数で表します。−2,147,483,648~2,147,483,647 の数値を表現できます。
0|0000000 00000000 00000000 00000000 : 0 0|0000000 00000000 00000000 00000001 : 1 0|0000000 00000000 00000000 00000010 : 2 0|1111111 11111111 11111111 11111111 : 2,147,483,647 1|1111111 11111111 11111111 11111111 : -1 1|1111111 11111111 11111111 11111110 : -2 1|0000000 00000000 00000000 00000000 : -2,147,483,648
64ビットで 0~18,446,744,073,709,551,615 の数値を表します。
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 : 0 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 : 1 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000010 : 2 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 : +18,446,744,073,709,551,615
先頭の1ビットで符号(0は正数、1は負数)を、残りの63ビットで絶対値を表します。負数の場合は2の補数で表します。−9,223,372,036,854,775,808~9,223,372,036,854,775,807 の数値を表現できます。
0|0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 : 0 0|0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 : 1 0|0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000010 : 2 0|1111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 : 9,223,372,036,854,775,807 1|1111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 : -1 1|1111111 11111111 11111111 11111111 11111111 11111111 11111111 11111110 : -2 1|0000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 : -9,223,372,036,854,775,808
1.23 や 1.23×103 など、小数を含む数値を 浮動小数点数(floating point number)と呼びます。1.23×103 の場合、1.23 を仮数、3乗を指数と呼びます。浮動小数点数をメモリ上にどのように配置するかの仕様はいくつかの形式がありますがほとんどの実装は IEEE 754 形式に従っています。1ビットの符号、数ビットの指数部、数ビットの仮数部から構成されます。
符号1ビット+指数8ビット+仮数23ビット=32ビットに格納します。指数は127を加えた値とします。仮数は2進数で1.110011 の場合先頭の 1. を省略して 110011 と表します。0.0 は特別に All 0 で表します。
0|0000000 0|0000000 00000000 00000000 : 0.0(10進) 0|0111111 1|0000000 00000000 00000000 : 1.0×100(10進) = 1.0×20(2進) 0|0111111 1|1000000 00000000 00000000 : 1.5×100(10進) = 1.1×20(2進) 0|0111111 1|1100000 00000000 00000000 : 1.75×100(10進) = 1.11×20(2進) 0|0111111 1|1110000 00000000 00000000 : 1.875×100(10進) = 1.111×20(2進) 1|0111111 1|1110000 00000000 00000000 : -1.875×100(10進) = -1.111×20(2進) 0|1000100 1|0011001 11000000 00000000 : 1.23×103(10進) = 1.00110111×210(2進)
指数部の All 1 は無限大や NaN を意味します。
0|1111111 1|0000000 00000000 00000000 : 無限大 0|1111111 1|(Any value other than 0) : NaN
最大値・最小値は下記となります。
0|1111111 0|1111111 11111111 11111111 : +3.4028235E+38(最大値) 1|1111111 0|1111111 11111111 11111111 : -3.4028235E+38(最小値) 0|0000000 0|0000000 00000000 00000001 : +1.401298E-45(正の最小桁数) 1|0000000 0|0000000 00000000 00000001 : -1.401298E-45(負の最小桁数)
符号1ビット+指数11ビット+仮数52ビット=64ビットに格納します。指数は1023を加えた値とします。仮数は2進数で1.110011 の場合先頭の 1. を省略して 110011 と表します。0.0 は特別に All 0 で表します。
0|0000000 0000|0000 00000000 00000000 00000000 00000000 00000000 00000000 : 0.0 0|0111111 1111|0000 00000000 00000000 00000000 00000000 00000000 00000000 : 1.0×100(10進) = 1.0×20(2進) 0|0111111 1111|1000 00000000 00000000 00000000 00000000 00000000 00000000 : 1.5×100(10進) = 1.1×20(2進) 0|0111111 1111|1100 00000000 00000000 00000000 00000000 00000000 00000000 : 1.75×100(10進) = 1.11×20(2進) 0|0111111 1111|1110 00000000 00000000 00000000 00000000 00000000 00000000 : 1.875×100(10進) = 1.111×20(2進) 1|0111111 1111|1110 00000000 00000000 00000000 00000000 00000000 00000000 : -1.875×100(10進) = -1.111×20(2進) 0|1000000 1001|0011 00111000 00000000 00000000 00000000 00000000 00000000 : 1.23×103(10進) = 1.001100111×210(2進)
指数部の All 1 は無限大または NaN を意味します。
0|1111111 1111|0000 00000000 00000000 00000000 00000000 00000000 00000000 : 無限大 0|1111111 1111|(Any value other than 0) : NaN
最大値・最小値は下記となります。
0|1111111 1110|1111 11111111 11111111 11111111 11111111 11111111 11111111 : +1.7976931348623157e308 1|1111111 1110|1111 11111111 11111111 11111111 11111111 11111111 11111111 : -1.7976931348623157e308 0|0000000 0000|0000 00000000 00000000 00000000 00000000 00000000 00000001 : +4.94066e-324 1|0000000 0000|0000 00000000 00000000 00000000 00000000 00000000 00000001 : -4.94066e-324
例えば整数の 255 を 16ビット符号無し整数で表すと 00000000 11111111 となります。この時、メモリの番地の若い順に 00000000 11111111 と格納する方式を ビッグエンディアン と呼びます。逆に 11111111 00000000 の様に逆順に格納する方式を リトルエンディアン と呼びます。このバイトの並びのことを バイトオーダー と呼びます。バイトオーダーは多くの場合 CPU の種別によって決まります。現在の Windows PC で一般的に用いられている Intel 系の CPU ではリトルエンディアンが、MC68000 などの Motorola 系や Apple の M2 等ではビッグエンディアンが採用されています。