データ型
C言語等では変数の使用目的に合った型を明示してプログラミングを行います。
これにより、各変数が扱うことのできるデータの種類を制限できます。
基本データ型
型指定 | データ型 | サイズ | 数値範囲 |
---|---|---|---|
char | 文字型 | 1 Byte | -128 ~ 127 |
short | 短整数型 | 2 Byte | -32768 ~ 32767 |
int | 整数型 | 4 (2) Byte |
-2147483648 ~ 2147483647 (-32768 ~ 32767) |
long | 倍長整数型 | 4 Byte | -2147483648 ~ 2147483647 |
float | 単精度浮動小数点型 | 4 Byte | 1.1E-38 ~ 3.4E+38 |
double | 倍精度浮動小数点型 | 8 Byte | 2.2E-308 ~ 1.7E+308 |
型の前にunsigned(符号なし)と書くことで、扱える範囲を正の整数にすることができます。
※ サイズ及び、数値範囲は,処理系によって異なる場合があります。
符号付きと符号なし整数について
int型、double型の変数や定数には加算や減算や乗算などの算術演算を施すことが出来る為、
算術型(arithmetic type)と呼ばれます。
その中で整数型(integer type)と文字型(character type)は、有効範囲の連続した整数を表現する型です。
いずれも以下の2種類があります。
① 符号なし整数 : 0と正を表現する整数型
② 符号付き整数 : 負と0と正を表現する整数型
変数を宣言する際に、signed あるいは unsigned の型指定子(type specifier)をつけることによって、
どちらであるのかを指定することが出来ます。
なお、整数型に型指定子を明示的に与えない場合は、符号付きとみなされます。
符号なし整数
符号なし整数の内部は、値の2進数表現を、そのままビットに対応させたものです。
ここでは、unsigned int(32bit)型の 5 を例に考えた場合、10進数の 5 の2進数は 101 です。
下図に示すように、上位側のビットを全て 0 で埋め尽くした 0000 … 101 で表現します。
符号付き整数
符号付き整数の内部表現は、処理系によって異なります。
一般的に広く利用されている内部表現法は、「2 の補数表現」、「1の補数表現」、「符号と絶対値表現」の
3 種類です。
いずれの表現でも、数値の符号を最上位ビットで表すことが共通です。
その符号ビットは、数値が負であれば 1 として、非負(0 or 正)であれば 0 とします。
① 符号と絶対値 (sign and magnitude representation)
符号ビットだけを 0 から 1 に変更します。
② 1 の補数 (1's complement representation)
全てのビットを反転します。
③ 2 の補数 (2's complement representation)
全てのビットを反転した「1 の補数」に 1 を加えます。 ※多くの処理系で用いられています。