olika processorer Stöder olika integrerade datatyper. Vanligtvis kommer hårdvara att stödja både signerade och osignerade typer, men bara en liten, fast uppsättning bredder.
tabellen ovan listar integraltypbredder som stöds i maskinvara av vanliga processorer. Programmeringsspråk på hög nivå ger fler möjligheter. Det är vanligt att ha en ”dubbel bredd” integrerad typ som har dubbelt så många bitar som den största hårdvarustödda typen., Många språk har också bitfälttyper (ett visst antal bitar, vanligtvis begränsade till att vara mindre än den maximala hårdvarustödda bredden) och intervalltyper (som endast kan representera heltal i ett visst område).
vissa språk, såsom Lisp, Smalltalk, REXX, Haskell, Python, och Raku stöd godtyckliga precisions heltal (även känd som oändlig precision heltal eller bignums)., Andra språk som inte stöder detta koncept som en toppnivåkonstruktion kan ha bibliotek tillgängliga för att representera mycket stora tal med hjälp av arrayer av mindre variabler, till exempel Javas BigInteger-klass eller Perls ”bigint” – paket. Dessa använder så mycket av datorns minne som är nödvändigt för att lagra siffrorna; dock, en dator har bara en ändlig mängd lagring, så att de också kan endast representera en ändlig delmängd av de matematiska heltal. Dessa system stöder mycket stora tal, till exempel en kilobyte minne kan användas för att lagra siffror upp till 2466 decimaler långa.,
en boolesk eller Flaggtyp är en typ som endast kan representera två värden: 0 och 1, vanligtvis identifierad med false respektive true. Denna typ kan lagras i minnet med en enda bit, men ges ofta en fullständig byte för att underlätta adressering och åtkomsthastighet.
en fyrbitsmängd är känd som en nibble (när man äter, är mindre än en bit) eller nybble (är en pun på formen av ordet byte). En nibble motsvarar en siffra i hexadecimal och har en siffra eller en teckenkod i binärkodad decimal.,
byte och oktetsedit
termen byte menade ursprungligen ”den minsta adresserbara minnesenheten”. Tidigare, 5-, 6-, 7-, 8-, och 9-bitars byte har alla använts. Det har också funnits datorer som kan ta itu med enskilda bitar (”bitadresserad maskin”), eller som bara kunde ta itu med 16-eller 32 – bitars kvantiteter (”ordadresserad maskin”). Termen byte användes vanligtvis inte alls i samband med bit – och ordbehandlade maskiner.
termen oktett hänvisar alltid till en 8-bitars kvantitet., Det används oftast inom datanätverk, där datorer med olika byte bredder kan behöva kommunicera.
i modern användning byte betyder nästan alltid åtta bitar, eftersom alla andra storlekar har fallit i disuse; således byte har kommit att vara synonymt med octet.
WordsEdit
praktiskt taget alla nya stationära processorer kan använda 64-bitars ord, men inbäddade processorer med 8 – och 16-bitars ordstorlek är fortfarande vanliga. Den 36-bitars ordlängd var vanligt i början av datorer.,
en viktig orsak till icke-portabilitet av programvara är det felaktiga antagandet att alla datorer har samma ordstorlek som datorn som används av programmeraren. Till exempel, om en programmerare som använder C-språket felaktigt deklarerar som int en variabel som kommer att användas för att lagra värden som är större än 215-1, kommer programmet att misslyckas på datorer med 16-bitars heltal. Den variabeln borde ha deklarerats så länge, som har minst 32 bitar på vilken dator som helst., Programmerare kan också felaktigt anta att en pekare kan konverteras till ett heltal utan förlust av information, vilket kan fungera på (vissa) 32-bitars datorer, men misslyckas på 64-bitars datorer med 64-bitars pekare och 32-bitars heltal. Denna fråga löses av C99 i stdint.h i form av intptr_t
.
kort heltal
ett kort heltal kan representera ett heltal som kan ta mindre lagring, samtidigt som ett mindre intervall, jämfört med ett standardtal på samma maskin.
i C betecknas den med kort., Det är nödvändigt att vara minst 16 bitar, och är ofta mindre än ett standardtal, men detta krävs inte. Ett överensstämmande program kan anta att det säkert kan lagra värden mellan −(215-1) och 215-1, men det kan inte anta att intervallet inte är större. I Java är en kort alltid ett 16-bitars heltal. I Windows API definieras datatype SHORT som ett 16-bitars signerat heltal på alla maskiner.,>−32,768
Long integerEdit
A long integer can represent a whole integer whose range is greater than or equal to that of a standard integer on the same machine.,
i C betecknas den med lång. Det är nödvändigt att vara minst 32 bitar, och får eller får inte vara större än ett standard heltal. Ett överensstämmande program kan anta att det säkert kan lagra värden mellan – (231-1) och 231-1, men det kan inte anta att intervallet inte är större.
Long longEdit
i C99-versionen av C-programmeringsspråket och C++11-versionen av C++ stöds enlong long
– typ som har dubbla standardkapacitetenlong
. Den här typen stöds inte av kompilatorer som kräver att C-koden överensstämmer med den tidigare C++ – standarden, C++03, eftersom den långa långa typen inte existerade i C++03. För en ANSI/ISO −kompatibel kompilator måste minimikraven för de specificerade intervallen, det vill säga – (263-1) till 263-1 för signerad och 0-264-1 för osignerad, uppfyllas.det är dock tillåtet att utvidga detta intervall., Detta kan vara ett problem när du byter kod och data mellan plattformar, eller gör direkt tillgång till hårdvara. Således finns det flera uppsättningar av rubriker som tillhandahåller plattformsoberoende exakta bredd typer. C-standardbiblioteket ger stdint.h; detta infördes i C99 och C++11.