verschillende CPU ‘ s ondersteunen verschillende integrale gegevenstypen. Meestal ondersteunt hardware zowel ondertekende als niet-ondertekende types, maar slechts een kleine, vaste set breedtes.
de tabel hierboven geeft een overzicht van integral type breedtes die in hardware worden ondersteund door gemeenschappelijke processors. Programmeertalen op hoog niveau bieden meer mogelijkheden. Het is gebruikelijk om een ‘double width’ integraaltype te hebben dat twee keer zoveel bits heeft als het grootste hardware-ondersteunde type., Veel talen hebben ook bit-field types (een bepaald aantal bits, meestal beperkt tot minder dan de maximale door hardware ondersteunde breedte) en range types (die alleen de gehele getallen in een bepaald bereik kunnen vertegenwoordigen).
sommige talen, zoals Lisp, Smalltalk, REXX, Haskell, Python en Raku ondersteunen willekeurige precisie gehele getallen (ook bekend als oneindige precisie gehele getallen of bignums)., Andere talen die dit concept niet ondersteunen als een top-level constructie kunnen bibliotheken beschikbaar hebben om zeer grote aantallen te vertegenwoordigen met behulp van arrays van kleinere variabelen, zoals Java ’s BigInteger klasse of Perl’ s “bigint” pakket. Deze gebruiken zoveel van het geheugen van de computer als nodig is om de getallen op te slaan; een computer heeft echter slechts een eindige hoeveelheid opslag, zodat ook zij slechts een eindige deelverzameling van de wiskundige gehele getallen kunnen vertegenwoordigen. Deze schema ‘ s ondersteunen zeer grote getallen, bijvoorbeeld een kilobyte geheugen kan worden gebruikt om getallen tot 2466 decimale cijfers lang op te slaan.,
een Booleaans of Vlagtype is een type dat slechts twee waarden kan vertegenwoordigen: 0 en 1, meestal geïdentificeerd met respectievelijk false en true. Dit type kan worden opgeslagen in het geheugen met behulp van een enkele bit, maar wordt vaak gegeven een volledige byte voor het gemak van adresseren en de snelheid van de toegang.
een vier-bits hoeveelheid is bekend als een knabbel (bij het eten, kleiner dan een beet) of nybble (een woordspeling op de vorm van het woord byte). Eén Knabbel komt overeen met één cijfer in hexadecimaal en houdt één cijfer of een tekencode in binaire-gecodeerde decimaal.,
Bytes en octetsEdit
De term byte betekende aanvankelijk ‘de kleinste adresseerbare geheugeneenheid’. In het verleden, 5-, 6-, 7-, 8-, en 9-bit bytes zijn allemaal gebruikt. Er zijn ook computers geweest die individuele bits konden adresseren (“bit-addressed machine”), of die alleen 16 – of 32-bits hoeveelheden konden adresseren (“word-addressed machine”). De term byte werd meestal niet gebruikt in verband met BiT-en woordgerichte machines.
De term octet verwijst altijd naar een 8-bit hoeveelheid., Het wordt meestal gebruikt op het gebied van computernetwerken, waar computers met verschillende byte breedtes kunnen moeten communiceren.
in modern gebruik betekent byte bijna altijd acht bits, omdat alle andere groottes in onbruik zijn geraakt; dus is byte synoniem geworden met octet.
WordsEdit
vrijwel alle nieuwe desktop processors kunnen 64-bits woorden gebruiken, hoewel ingebedde processors met 8 – en 16-bits woordgrootte nog steeds gebruikelijk zijn. De 36-bit woordlengte was gebruikelijk in de vroege dagen van computers.,
een belangrijke oorzaak van de niet-overdraagbaarheid van software is de onjuiste veronderstelling dat alle computers dezelfde woordgrootte hebben als de computer die door de programmeur wordt gebruikt. Bijvoorbeeld, als een programmeur die de taal C verkeerd gebruikt declareert als Int een variabele die zal worden gebruikt om waarden groter dan 215-1 op te slaan, zal het programma op computers met 16-bits gehele getallen falen. Die variabele had moeten worden gedeclareerd als lang, die ten minste 32 bits op elke computer heeft., Programmeurs kunnen ook ten onrechte aannemen dat een pointer kan worden geconverteerd naar een geheel getal zonder verlies van informatie, wat kan werken op (sommige) 32-bits computers, maar falen op 64-bits computers met 64-bits pointers en 32-bits gehele getallen. Dit probleem wordt opgelost door C99 in stdint.h in de vorm van intptr_t
.
short integer
een short integer kan een heel getal vertegenwoordigen dat minder opslagruimte kan nemen, terwijl het een kleiner bereik heeft, vergeleken met een standaard integer op dezelfde machine.
In C wordt het aangeduid met short., Het moet minstens 16 bits zijn, en is vaak kleiner dan een standaard integer, maar dit is niet vereist. Een conform programma kan aannemen dat het veilig waarden tussen −(215-1) en 215-1 kan opslaan, maar het mag niet aannemen dat het bereik niet groter is. In Java is een short altijd een 16-bit integer. In de Windows API wordt het datatype SHORT gedefinieerd als een 16-bit ondertekend integer op alle machines.,>−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.,
In C wordt het aangeduid met long. Het moet minstens 32 bits zijn, en kan al dan niet groter zijn dan een standaard geheel getal. Een conform programma kan aannemen dat het veilig waarden tussen −(231-1) en 231-1 kan opslaan, maar het mag niet aannemen dat het bereik niet groter is.
Long longEdit
in de C99-versie van de programmeertaal C en de C++11-versie van C++ wordt een long long
type ondersteund dat het dubbele heeft van de minimale capaciteit van de standaard long
. Dit type wordt niet ondersteund door compilers die vereisen dat C-code voldoet aan de vorige C++ – standaard, C++03, omdat het long long-type niet bestond in C++03. Voor een compiler die aan ANSI/ISO voldoet, moet worden voldaan aan de minimumeisen voor de gespecificeerde bereiken, dat wil zeggen −(263-1) tot 263-1 voor signed en 0 tot 264-1 voor unsigned; uitbreiding van dit bereik is echter toegestaan., Dit kan een probleem zijn bij het uitwisselen van code en gegevens tussen platforms, of het doen van directe hardware toegang. Zo zijn er verschillende sets van headers bieden platform onafhankelijke exacte breedte types. De C standard library biedt stdint.h; dit werd geïntroduceerd in C99 en c++11.