整数型

整数型とは



整数型(integer type)は、コンピュータ整数を扱うためのデータ型です。コンピュータが扱うデータ型の中でも最も基本的な部類に属します。多くのプログラミング言語では、整数型は固定長で、表現できる値の範囲が限定されていますが、より大きな範囲の整数値を扱うためのライブラリや機能も提供されています。

歴史



パスカルの機械式計算機など、数を処理対象としていた計算機械の歴史を振り返ると、整数を扱うことはコンピュータ以前から存在していました。

整数型の種類



精度



コンピュータ実数を表現するためによく用いられる浮動小数点数は、有限のビット数で表現されるため、誤差を伴う近似値となります。一方、整数は誤差なく正確に表現できます。ただし、整数型も有限のビット幅で表現されるため、表現可能な範囲には限界があり、範囲を超えると算術オーバーフローが発生します。

固定長と可変長



多くのプログラミング言語では、組み込みの整数型は固定長です。一般的に、8ビット、16ビット、32ビット、64ビットなど、8の倍数であるビット幅を持ちます。C言語のように処理系依存の整数型を持つ言語もあり、`int`型や`long`型は、プロセッサのレジスタのワード幅に合わせたサイズが用いられます。これらの組み込み型は、コンピュータ上で高速に処理できます。

一方で、可変長の整数型も存在します。可変長の整数型は、任意の値の整数を扱うことができ、ライブラリを通じて利用することが一般的です。言語によっては、固定長と可変長がシームレスに切り替わることもあります。可変長整数型は、大きな数を扱う際に利用され、BigNumやBigInt、多倍長整数などと呼ばれます。

符号付きと符号無し



整数型には、正と負の両方の整数を表せる符号付き整数型と、0または正の整数のみを表せる符号無し整数型があります。符号付き整数型は、負の数を表現できる代わりに、表現できる値の範囲が半分になります。符号無し整数型は、ビットの並びをそのまま数値として解釈しますが、符号付き整数型では、負の値を表すためにいくつかの表現方法があります。

長さ



可変長整数型は任意の長さを持つことができますが、固定長整数型は処理系によって長さが定義されます。C/C++の組み込み整数型には、`int`の他に`short`と`long`がありますが、これらの長さは処理系によって異なり、上限値と下限値のみが規定されています。しかし、近年では、ビット数と内部表現を明確にした固定幅整数型(`int64_t`など)が標準化されています。固定幅整数型は、特に移植性や相互運用性が求められる場面で有用です。

暗号などで大きな整数を扱う際には、固定サイズのデータ型を配列や構造体のような集成体で表現し、専用の関数やマクロを使って処理することもあります。

また、バイト(byte)や[ワード]という単位で整数型を表現することもあります。

固定小数点



固定小数点表現は、整数の一部を小数として扱う表現法で、プログラマが整数演算を組み合わせて実装します。

整数型と関連するデータ型



文字型



ASCII文字コード体系では、1文字を1バイトの整数型として扱えます。しかし、多言語対応のためには、複数バイトで1文字を表現する符号化方式や、Unicodeのような国際的な符号化方式が用いられます。Javaの`char`型は、当初Unicodeを表現するために16ビットでしたが、後にサロゲートペアの導入により、1文字を2つの`char`で表す場合も発生しました。

ブーリアン型



論理演算に用いられるブーリアン型は、C/C++では整数型の一種として扱われます。C++の`bool`型は`true`または`false`の値を取りますが、整数型の一種です。JavaやC#では、ブーリアン型は整数型とは別の型として扱われます。

列挙型



列挙型は、Cでは整数型の一種として扱われます。C++では整数型とは異なる型ですが、整数型に暗黙的に変換できます。Javaの列挙型は参照型で、C#の列挙型は値型ですが、整数型との相互変換が可能です。

ポインタ



ポインタはメモリアドレスを抽象化した概念ですが、整数型とポインタ型は同一ではありません。C/C++ではポインタと整数の間の変換は処理系定義です。ポインタ間の減算結果を格納する型として`ptrdiff_t`、ポインタと相互変換可能な整数型として`intptr_t`と`uintptr_t`があります。

各種コンピュータ言語における標準整数



(各種コンピュータ言語における標準整数型の対応表は省略)

データモデル



C言語におけるデータモデルは、整数型のビット数の割り当て方を示します。32ビット環境ではILP32モデルが一般的でしたが、64ビット環境では、IL32P64、LP64、ILP64など、異なるモデルが使用されています。

特にマイクロプロセッサの64ビット化に伴い、整数型のサイズが環境によって異なるため、データモデルが重要となります。

まとめ



整数型は、コンピュータにおける基本的なデータ型の一つであり、様々な種類と表現方法が存在します。プログラミングを行う際には、それぞれの特性を理解し、適切に使い分けることが重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。