整数型
整数型(せいすうがた、英語:Integer)は、プログラムのソースコードにおけるのデータ型の1つまたは1群で、整数を取り扱うものである。
プログラムで扱うもっとも単純な単位であり、コンピュータの初期から概念として存在している。
目次 |
[編集] 種類
[編集] 符号あり整数と符号なし整数
正負両方の整数を表せる符号あり整数型と、非負(0または正)の整数だけを表せる符号なし整数型とがある。符号あり整数型は、負数を表せるかわりに、表せる正数の上限は低い。
詳細は「符号付数値表現」を参照
符号なし整数は、ビットの並びをそのまま数値として解釈するが、符号あり整数では、負の値の表現方法にいくつか種類が存在する。
[編集] 短精度整数型と長精度整数型
多くの言語には、通常の整数型より表せる範囲が狭い(そのかわりメモリ消費が少ない)短精度整数型(単精度整数型)と、範囲が広い(そのかわりメモリ消費が多く、低速なこともある)長精度整数型がある。さらに範囲が広い倍長精度整数型があることもある。
短精度整数型、整数型、長精度整数型、倍長精度整数型の表せる範囲は言語や処理系によって違うので、曖昧さをなくすために○ビット整数型、○バイト整数型という言いかたもある。また、バイト型、ワード型、ダブルワード型などという言いかたもある。
[編集] 文字型
文字は、コンピュータの内部では整数で表現されている。そのため、多くの言語は文字型を整数型の一種として扱う。ただし、その関係性は言語によって文字型と整数型が互いに型変換可能であるものから、独立した文字型がなく、文字型に相当するものが完全に整数型の分類の1つに組み込まれたもの(Cなど)まで様々である。
[編集] 多倍長整数型
多倍長整数型は、事実上任意の範囲(たとえば数百桁~数百万桁)の整数を表すことができる。通常、ソフトウェアで実装され、内部的には整数の配列で表現されている。
[編集] 固定小数点実数型
固定小数点実数型は、内部的には浮動小数点実数型より整数型に近いため、整数型の1種とすることがある。
[編集] ポインタ
ポインタは多くの場合、メモリアドレスを指す整数値として実装されている。ただし、ポインタに対する演算はCに代表されるように、通常の整数とは異なった扱いを受けることが多い。
[編集] ビットによる範囲の制限
多くのコンピュータ (CPU)はデータをビット列として表すが、そのサイズにより表せる数の上限が違ってくる。例えばデータ型が8ビットなら、扱える数の範囲は符号なし場合で0から255までである。
プログラミング言語における整数型のビット数は、各プログラミング言語の仕様、あるいはそれをコンパイラ等に実装する際の仕様により決められる。通常、それらを使用すると想定されるコンピュータ・アーキテクチャに合ったものにされる。実際にはアーキテクチャの普及や言語開発にかかる時間があるので、アーキテクチャの推移よりも遅れて推移する。
2006年現在、64ビットCPUが普及しているにもかかわらず、新たにリリースされる言語の多くは整数型を32ビットとしている。しかし、新しい言語仕様の中には、整数型が64ビットのものも現れている。逆に現在でも、互換性などの事情により16ビットである言語も存在する。
ライブラリ等を使うことにより、元の言語の仕様よりも桁数の大きい整数を取り扱うことが可能になる場合もある。また、あらかじめ桁数の大きい整数を取り扱うことのできるようにしてある言語もあり、例えば、UBASICでは2700桁までの整数が使用できる。
[編集] データ型名
| ビット数 | 符号 | C (C99) | C/C++(LLP641) | C/C++(LP641) | Java | C# | SQL92 | VB(Ver6以前) |
|---|---|---|---|---|---|---|---|---|
| 8 | 有 | int8_t | signed char2 | signed char2 | byte | sbyte | ||
| 16 | 有 | int16_t | short | short | short | short | smallint, int2 | Integer |
| 32 | 有 | int32_t | int, long | int | int | int | integer, int, int4 | Long |
| 64 | 有 | int64_t | long long | long, long long | long | long | bigint, int8 | |
| 8 | 無 | uint8_t | unsigned char | unsigned char | byte | tinyint, int1 | Byte | |
| 16 | 無 | uint16_t | unsigned short | unsigned short | char | ushort | ||
| 32 | 無 | uint32_t | unsigned int unsigned long |
unsigned int | uint | |||
| 64 | 無 | uint64_t | unsigned long long | unsigned long unsigned long long |
ulong |
1 C/C++ では整数型の絶対的なビット数は規格で定められていないため、様々なビット数の割り当て方が存在し、この割り当て方を定めた物をデータモデルという。多くの16/32ビット環境と Windows 64ビット環境では LLP64 モデルが使用されている。また、Unix 系など多くの64ビット環境では LP64 モデルが使用されている[1]。
2 C/C++ では単なる char 型の符号有/無については規定されてなく、処理系によって異なる。