整数型 せいすうがた
簡単に言うとこんな感じ!
「小数点のない数(1、42、−100 など)を入れるための箱」だよ!コンピュータは数を種類ごとに別の箱に入れて管理していて、整数専用の箱が「整数型」なんだ。箱のサイズによって入れられる数の範囲が変わるってこと!
整数型とは
整数型(integer type) とは、プログラムの中で小数点を含まない整数値(…−2、−1、0、1、2…)を格納するためのデータ型のひとつです。プログラミング言語においてデータ型とは「どんな種類の値を扱うか」をコンピュータに伝えるための分類であり、整数型はその中でも最も基本的かつ頻繁に使われる型です。
コンピュータはすべてのデータを0と1のビット列として扱います。整数型では、何ビット(何バイト)をその数の表現に使うかをあらかじめ決めることで、扱える数の範囲が定まります。たとえば「8ビットで表せる整数は −128〜127」というように、箱のサイズ(ビット数)が容量(値の範囲)を決めるイメージです。
システム発注や要件定義の場面では、「IDの最大値は何桁か」「マイナス値を扱うか」といった観点で整数型の選択が設計に影響します。適切なサイズを選ばないとオーバーフロー(値があふれるバグ) が起きたり、逆に無駄なメモリを消費したりするため、エンジニアとの仕様確認でよく話題になる概念です。
整数型の種類と値の範囲
言語によって名称は異なりますが、ビット幅ごとに以下のような種類があります。符号あり(signed) は負の数も扱える型、符号なし(unsigned) は 0以上の整数のみ扱える型です。
| 種類 | ビット幅 | 符号あり の範囲 | 符号なし の範囲 | 主な用途例 |
|---|---|---|---|---|
int8 / byte | 8 bit | −128 〜 127 | 0 〜 255 | フラグ・小さなカウンタ |
int16 / short | 16 bit | −32,768 〜 32,767 | 0 〜 65,535 | 音声データ・センサー値 |
int32 / int | 32 bit | 約−21億 〜 約21億 | 0 〜 約43億 | 一般的なID・件数 |
int64 / long | 64 bit | 約−920京 〜 約920京 | 0 〜 約1840京 | タイムスタンプ・大規模ID |
覚え方:「箱が大きいほど大きな数が入る」
ビット数 = 箱のサイズ、と覚えましょう。8ビットは小さな弁当箱、64ビットは大きなコンテナのイメージです。符号あり/なしの違いは「マイナス側のスペースを正の側に回せるかどうか」。符号なし uint32 なら約43億まで扱えるのに、符号あり int32 だと正の側は約21億止まりになります。
注意:年号・大きなIDには 32 bit では足りないことも
たとえば Unix 時間(1970年1月1日からの経過秒数)を 32 bit 整数で扱うと 2038年問題 が発生します。これはまさに整数型のビット幅不足による実害です。発注側もデータ量の見積もり段階で「IDが将来何桁になるか」を意識するとよいでしょう。
歴史と背景
- 1950年代:初期のコンピュータ言語(FORTRANなど)が整数型を持つ。ハードウェアが直接扱えるのが整数演算だったため、最初から中心的な型だった
- 1970年代:C言語が
int・short・longなどの整数型を定義。以降、多くの言語がこの設計を継承 - 1989年:ANSI C(C89)が規格化され、整数型の定義がある程度標準化される
- 1999年:C99 で
int8_t・int32_tなどビット幅を明示した型(<stdint.h>)が導入。移植性の高いコードを書きやすくなる - 2000年代〜:64ビットCPUの普及に伴い、
int64/long longが一般的に。SNS・ECサイトのユーザーID管理などで必須の型になる - 現在:Python のように「整数型のビット幅を気にしなくてよい(任意精度整数)」言語も普及。ただら組み込み・パフォーマンス重視の場面では依然としてビット幅の選択が重要
言語ごとの整数型の書き方比較
言語によって名称や扱いは異なりますが、概念は共通です。
【言語別・整数型の宣言例】
◆ C / C++
int age = 30;
unsigned int score = 9999;
int64_t user_id = 1234567890123LL;
◆ Java
int age = 30;
long userId = 1234567890123L;
◆ Python(任意精度:ビット幅を意識しなくてよい)
age = 30
big_number = 10 ** 100 # 何桁でもOK
◆ Go
var age int32 = 30
var userID int64 = 1234567890123
◆ TypeScript / JavaScript
// number 型で整数・小数を統一管理(IEEE 754倍精度)
const age: number = 30;
// 大きな整数は BigInt を使う
const bigId: bigint = 1234567890123456789n;
整数型 vs 浮動小数点型 の使い分け
💡 金額計算に浮動小数点型は使わない! 金融系システムでは 0.1 + 0.2 が 0.30000000000000004 になるような丸め誤差が致命的です。通貨は「円単位の整数型」や専用のDecimal型で扱うのが定石です。
関連する規格・RFC
| 規格 | 内容 |
|---|---|
| ISO/IEC 9899:2018(C18) | C言語の国際規格。int・short・long などの整数型を定義 |
| IEEE 754 | 浮動小数点数の規格(整数型との比較対象として重要) |
関連用語
- ./021-data-type.md — データ型:変数に格納できる値の種類を分類する概念
- ./023-floating-point-type.md — 浮動小数点型:小数を扱うためのデータ型
- ./024-boolean-type.md — 真偽値型(boolean):true / false だけを扱う型
- ./025-string-type.md — 文字列型:テキストデータを扱うための型
- ./026-overflow.md — オーバーフロー:型の範囲を超えた値が代入されたときに起きるバグ
- ./027-bit-byte.md — ビット・バイト:データ量の最小単位。整数型のサイズを理解するのに必須
- ./028-variable.md — 変数:値を格納するための名前付きの箱
- ./029-primitive-type.md — プリミティブ型:整数型・浮動小数点型・文字型などの言語組み込みの基本型