| Computer architecture bit widths |
|---|
| Bit |
| Application |
| Binary floating-pointprecision |
| Decimal floating-pointprecision |
Incomputer architecture,128-bitintegers,memory addresses, or otherdata units are those that are 128bits (16octets) wide. Also, 128-bitcentral processing unit (CPU) andarithmetic logic unit (ALU) architectures are those that are based onregisters,address buses, ordata buses of that size.
As of July 2025[update] there are no mainstreamgeneral-purpose processors built to operate on 128-bitintegers or addresses, although a number of processors do have specialized ways to operate on 128-bit chunks of data as summarized in§ Hardware.
A processor with 128-bit byte addressing could directly address up to 2128 (over3.40×1038) bytes, which would greatly exceed the total data captured, created, or replicated on Earth as of 2018, which has been estimated to be around 33 zettabytes (over 274 bytes).[1]
A 128-bit register can store 2128 (over 3.40 × 1038) different values. The range ofinteger values that can be stored in 128 bits depends on theinteger representation used. With the two most common representations, the range is 0 through 340,282,366,920,938,463,463,374,607,431,768,211,455(2128 − 1) for representation as an (unsigned)binary number, and −170,141,183,460,469,231,731,687,303,715,884,105,728 (−2127) through 170,141,183,460,469,231,731,687,303,715,884,105,727(2127 − 1) for representation astwo's complement.
Quadruple precision (128 bits) floating-point numbers can store 113-bitfixed-point numbers orintegers accurately without losingprecision (thus 64-bit integers in particular). Quadruple precision floats can also represent any position in theobservable universe with at least micrometer precision.[citation needed]
Decimal128 floating-point numbers can represent numbers with up to 34 significant digits.
A 128-bitmulticomparator was described by researchers in 1976.[2]
TheIBM System/360 Model 85,[3] andIBM System/370 and its successors, support 128-bit floating-point arithmetic.
TheSiemens 7.700 and 7.500 series mainframes and their successors support 128-bit floating-point arithmetic.[4]
Most modern CPUs featuresingle instruction, multiple data (SIMD) instruction sets (Streaming SIMD Extensions,AltiVec etc.) where 128-bitvector registers are used to store several smaller numbers, such as four 32-bit floating-point numbers. A single instruction can then operate on all these values in parallel. However, these processors do not operate on individual numbers that are 128 binary digits in length; only their vector registers have the size of 128 bits.
The DECVAX supported operations on 128-bit integer ('O' or octaword) and 128-bit floating-point ('H-float' or HFLOAT) datatypes. Support for such operations was an upgrade option rather than being a standard feature. Since the VAX's registers were 32 bits wide, a 128-bit operation used four consecutive registers or four longwords in memory.
TheICL 2900 Series provided a 128-bit accumulator, and its instruction set included 128-bit floating-point andpacked decimal arithmetic.
A CPU with 128-bit multimedia extensions was designed by researchers in 1999.[5]
Among thesixth generation of video game consoles, theDreamcast and thePlayStation 2 used the term128-bit in their marketing to describe their capability. The PlayStation 2's CPU had 128-bit SIMD capabilities.[6][7] Neither console supported 128-bit addressing or 128-bit integer arithmetic.
TheRISC-V ISA specification from 2016 includes a reservation for a 128-bit version of the architecture, but the details remain undefined intentionally, because there is yet so little practical experience with such large word size.[8]
In the same way thatcompilers emulate, e.g., 64-bit integer arithmetic on architectures with register sizes less than 64 bits, some compilers also support 128-bit integer arithmetic. For example, theGCC C compiler 4.6 and later has a 128-bit integer type__int128 for some architectures.[9] GCC and compatible compilers signal the presence of 128-bit arithmetic when the macro__SIZEOF_INT128__ is defined.[10] For theC programming language, 128-bit support is optional, e.g. via theint128_t type, or it can be implemented by a compiler-specific extension. TheRust programming language has built-in support for 128-bit integers (originally viaLLVM), which is implemented on all platforms.[11] A 128-bit type provided by a C compiler can be available inPerl via theMath::Int128 module.[12]