コンピュータ アーキテクチャにおいて、128 ビットの整数、メモリ アドレス、またはその他のデータ単位は、128 ビット (16 オクテット) の幅を持つものです。
現在、128 ビットの整数またはアドレスで動作する主流の汎用プロセッサーはありませんが、多くのプロセッサーは 128 ビットのデータ チャンクで動作する特別な方法を備えています。 IBM System/370 は 128 ビットの浮動小数点レジスタを使用していたため、最初の単純な 128 ビットコンピューターと見なすことができます。 最近のほとんどの CPU は単一命令複数データ(SIMD)命令セット (Streaming SIMD Extensions、AltiVec など)を備え、128 ビットベクトルレジスタを使用して、4 つの 32 ビット浮動小数点数など、複数の小さな数値を格納します。 1つの命令で、これらすべての値を並列に処理することができます。 しかし、これらのプロセッサーは、128 ビットの 2 進数の長さの個々の数値に対して演算を行うわけではなく、レジスタだけが 128 ビットのサイズを持っています。
DEC VAX は、128 ビットの整数 (「O」またはオクタワード) および 128 ビットの浮動小数点 (「H-フロート」または HFLOAT) データ型に対する演算をサポートしました。 このような操作のサポートは標準機能ではなく、アップグレードオプションであった。
ICL 2900 シリーズは 128 ビット アキュムレーターを提供し、その命令セットには 128 ビット浮動小数点およびパック 10 進演算が含まれていました。
コンパイラーは、64 ビット未満のレジスタ サイズのアーキテクチャ上で 64 ビット整数演算などをエミュレートしますが、一部のコンパイラーは 128 ビット整数演算もサポートします。 たとえば、GCC C コンパイラー 4.6 以降では、いくつかのアーキテクチャで 128 ビット整数型 __int128
がサポートされています。 GCCおよび互換コンパイラは、マクロ__SIZEOF_INT128__
が定義されると、128ビット演算の存在を通知します。 C言語では、128ビットサポートはオプションで、例えばint128_t
型を使用するか、コンパイラ固有の拡張で実装することができる。 プログラミング言語Rustは、128ビット整数のサポートを内蔵しており、すべてのプラットフォームで実装されています。 C コンパイラが提供する 128 ビット型は、Math::Int128
モジュールを介して Perl で利用できます。
128ビットレジスタは 2128 (3.40 × 1038 超) もの異なる値を格納することができます。 128ビットで格納できる整数値の範囲は、使用する整数表現に依存します。 最も一般的な2つの表現では、(符号なし)2進数として表現する場合、0から340,282,366,920,938,463,374,607,431,768,211,455(2128 – 1)までの範囲となります。 また、2 の補数で表現する場合は -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) から 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) となります。