整数型

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

整数型(せいすうがた、英語: integer)は、プログラムデータ型の1つまたは1群で、整数の部分集合を取り扱うものである。C言語Javaなどの多くのプログラミング言語において、整数型は実際には整数有限部分集合のみを取り扱う。

プログラムで扱うもっとも単純な単位であり、コンピュータの初期から概念として存在している。

種類[編集]

符号あり整数と符号なし整数[編集]

正負両方の整数を表せる符号あり整数型と、非負(0または正)の整数だけを表せる符号なし整数型とがある。符号あり整数型は、負数を表せるかわりに、表せる正数の上限は低い。

符号なし整数は、ビットの並びをそのまま数値として解釈するが、符号あり整数では、負の値の表現方法にいくつか種類が存在する。

短精度整数型と長精度整数型[編集]

多くの言語には、通常の整数型より表せる範囲が狭い(そのかわりメモリ消費が少ない)短精度整数型(単精度整数型)と、範囲が広い(そのかわりメモリ消費が多く、低速なこともある)長精度整数型がある。さらに範囲が広い倍長精度整数型があることもある。

短精度整数型、整数型、長精度整数型、倍長精度整数型の表せる範囲は言語や処理系によって違うので、曖昧さをなくすために○ビット整数型、○バイト整数型という言いかたもある。また、バイト型、ワード型、ダブルワード型などという言いかたもある。

文字型[編集]

文字は、コンピュータの内部では整数で表現されている。そのため、多くの言語は文字型を整数型の一種として扱う。ただし、その関係性は言語によって文字型と整数型が互いに型変換可能であるものから、独立した文字型がなく、文字型に相当するものが完全に整数型の分類の1つに組み込まれたもの(Cなど)まで様々である。

多倍長整数型[編集]

多倍長整数型は、事実上任意の範囲(たとえば数百桁~数百万桁)の整数を表すことができる。通常、ソフトウェアで実装され、内部的には整数の配列で表現されている。

固定小数点実数型[編集]

固定小数点実数型は、内部的には浮動小数点実数型より整数型に近いため、整数型の一種とすることがある。

ポインタ[編集]

ポインタは多くの場合、メモリアドレスを指す整数値として実装されている。ただし、ポインタに対する演算はCに代表されるように、通常の整数とは異なった扱いを受けることが多い。

データ型名[編集]

符号 ビット数 バイト数 C/C++
(C99, C++11)
C/C++
(32ビット, LLP641)
C/C++
(LP641)
Java C# SQL92 VB(Ver6以前) COBOL(代表例)
8 1 int8_t signed char2 byte sbyte
16 2 int16_t short short short smallint, int2 Integer COMP-1(1から4桁)
32 4 int32_t int
long
int int int integer, int, int4 Long COMP-1(5から9桁)
64 8 int64_t long long long
long long
long long bigint, int8 COMP-1(10から18桁)
8 1 uint8_t unsigned char byte tinyint, int1 Byte BINARY-CHAR UNSIGNED(機種依存)
16 2 uint16_t unsigned short char ushort COMP-1(1から4桁)
32 4 uint32_t unsigned int
unsigned long
unsigned int uint COMP-1(5から9桁)
64 8 uint64_t unsigned long long unsigned long
unsigned long long
ulong COMP-1(10から18桁)

1 C99/C++11 には int64_t など固定幅整数型があるが、古い C/C++ では整数型の絶対的なビット数は規格で定められていないため、様々なビット数の割り当て方が存在し、この割り当て方を定めた物をデータモデルという。多くの16/32ビット環境と Windows 64ビット環境ではintとlongが32ビットでポインタが64ビット、すなわち IL32P64(別名:LLP64)モデルが使用されている。また、Unix 系など多くの64ビット環境では I32LP64(別名:LP64)モデルが使用されている[1]

2 C/C++ では単なる char 型の符号有/無については規定されておらず、処理系によって異なる。

3 現段階においてint128以降は標準実装化されておらず、自作で関数化されている場合が多いようである。理論上はメモリ上での利用限界まで設定可能である。

参照[編集]

[ヘルプ]
  1. ^ 64ビットになると何が変わる?――64ビットプログラミングのデータモデル (2/2)

関連項目[編集]