I datorarkitektur är 128-bitars heltal, minnesadresser eller andra dataenheter de som är 128 bitar (16 oktetter) breda. Dessutom är 128-bitars CPU- och ALU-arkitekturer sådana som är baserade på register, adressbussar eller databussar av den storleken.
Och även om det för närvarande inte finns några vanliga processorer för allmänna ändamål som är byggda för att arbeta med 128-bitars heltal eller adresser, finns det ett antal processorer som har specialiserade sätt att arbeta med 128-bitars datamängder. IBM System/370 kan betraktas som den första enkla 128-bitarsdatorn, eftersom den använde 128-bitars flyttalregister. De flesta moderna CPU:er har SIMD-instruktionsuppsättningar (single-instruction multiple-data) (Streaming SIMD Extensions, AltiVec etc.) där 128-bitars vektorregister används för att lagra flera mindre tal, t.ex. fyra 32-bitars flyttalstal. En enda instruktion kan sedan bearbeta alla dessa värden parallellt. Dessa processorer arbetar dock inte med enskilda tal som är 128 binära siffror långa; endast deras register har en storlek på 128 bitar.
DEC VAX stödde operationer på 128-bitars heltal (”O” eller octaword) och 128-bitars flyttal (”H-float” eller HFLOAT) datatyper. Stöd för sådana operationer var ett uppgraderingsalternativ snarare än en standardfunktion. Eftersom VAX:s register var 32 bitar breda använde en 128-bitars operation fyra på varandra följande register eller fyra longwords i minnet.
ICL 2900 Series tillhandahöll en 128-bitars ackumulator, och dess instruktionsuppsättning innehöll 128-bitars aritmetik med flytande punkter och packade decimaler.
På samma sätt som kompilatorer emulerar t.ex. 64-bitars helhetsaritmetik på arkitekturer med registerstorlekar som är mindre än 64 bitar har vissa kompilatorer också stöd för 128-bitars aritmetik med heltal. GCC C-kompilatorn 4.6 och senare har till exempel en 128-bitars heltalstyp __int128
för vissa arkitekturer. GCC och kompatibla kompilatorer signalerar förekomsten av 128-bitars aritmetik när makrot __SIZEOF_INT128__
är definierat. För programmeringsspråket C är 128-bitarsstödet valfritt, t.ex. via typen int128_t
, eller så kan det implementeras genom ett kompilatorspecifikt tillägg. Programmeringsspråket Rust har inbyggt stöd för 128-bitars heltal, vilket implementeras på alla plattformar. En 128-bitars typ som tillhandahålls av en C-kompilator kan vara tillgänglig i Perl via modulen Math::Int128
.
Ett 128-bitarsregister kan lagra 2128 (över 3,40 × 1038) olika värden. Det intervall av heltalsvärden som kan lagras på 128 bitar beror på vilken heltalsrepresentation som används. Med de två vanligaste representationerna är intervallet 0 till 340 282 366 920 938 463 463 374 607 431 768 211 455 (2128 – 1) för representation som binärt tal (utan förtecken), och -170,141,183,460,469,231,731,687,303,715,884,105,728 (-2127) till 170,141,183,460,469,231,731,687,303,715,884,105,727 (2127 – 1) för representation som tvåkomplement.