データ型

整数型 せいすうがた

整数データ型intバイト数符号あり/なしプリミティブ型
整数型について教えて

簡単に言うとこんな感じ!

「小数点のない数(1、42、−100 など)を入れるための箱」だよ!コンピュータは数を種類ごとに別の箱に入れて管理していて、整数専用の箱が「整数型」なんだ。箱のサイズによって入れられる数の範囲が変わるってこと!


整数型とは

整数型(integer type) とは、プログラムの中で小数点を含まない整数値(…−2、−1、0、1、2…)を格納するためのデータ型のひとつです。プログラミング言語においてデータ型とは「どんな種類の値を扱うか」をコンピュータに伝えるための分類であり、整数型はその中でも最も基本的かつ頻繁に使われる型です。

コンピュータはすべてのデータを0と1のビット列として扱います。整数型では、何ビット(何バイト)をその数の表現に使うかをあらかじめ決めることで、扱える数の範囲が定まります。たとえば「8ビットで表せる整数は −128〜127」というように、箱のサイズ(ビット数)が容量(値の範囲)を決めるイメージです。

システム発注要件定義の場面では、「IDの最大値は何桁か」「マイナス値を扱うか」といった観点で整数型の選択が設計に影響します。適切なサイズを選ばないとオーバーフロー(値があふれるバグ) が起きたり、逆に無駄なメモリを消費したりするため、エンジニアとの仕様確認でよく話題になる概念です。


整数型の種類と値の範囲

言語によって名称は異なりますが、ビット幅ごとに以下のような種類があります。符号あり(signed) は負の数も扱える型、符号なし(unsigned) は 0以上の整数のみ扱える型です。

種類ビット幅符号あり の範囲符号なし の範囲主な用途例
int8 / byte8 bit−128 〜 1270 〜 255フラグ・小さなカウンタ
int16 / short16 bit−32,768 〜 32,7670 〜 65,535音声データ・センサー値
int32 / int32 bit約−21億 〜 約21億0 〜 約43億一般的なID・件数
int64 / long64 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言語intshortlong などの整数型を定義。以降、多くの言語がこの設計を継承
  • 1989年:ANSI C(C89)が規格化され、整数型の定義がある程度標準化される
  • 1999年:C99 で int8_tint32_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 浮動小数点型 の使い分け

整数型 vs 浮動小数点型 整数型(int など) ✓ 小数点なしの数を扱う ✓ 計算結果が正確 ✓ 高速・メモリ効率が良い 例: ID、個数、年齢、   ループカウンタ ✗ 小数を表現できない 浮動小数点型(float など) ✓ 小数を含む数を扱う ✓ 非常に大きな数も表現可能 ✓ 科学計算・グラフィクス向き 例: 気温、座標、割合、   金額計算(※注意あり) ✗ 丸め誤差が生じることがある VS

💡 金額計算に浮動小数点型は使わない! 金融系システムでは 0.1 + 0.2 が 0.30000000000000004 になるような丸め誤差が致命的です。通貨は「円単位の整数型」や専用のDecimal型で扱うのが定石です。


関連する規格・RFC

規格内容
ISO/IEC 9899:2018(C18)C言語の国際規格。intshortlong などの整数型を定義
IEEE 754浮動小数点数の規格(整数型との比較対象として重要)

関連用語