Geheel getal (computer)
In de informatica wordt een integer (of in zijn Engelse vorm integer , vaak afgekort tot int ) gedefinieerd als elk type data dat een subset van de wiskundige set integers kan vertegenwoordigen .
Waarde en representatie
De waarde van een integer gegevenstype bestaat uit het integer waarmee het overeenkomt. De representatie bestaat uit de manier waarop het is opgeslagen in het geheugen van de computer. Integer-gegevens kunnen worden ondertekend of niet- ondertekend , wat discriminerend is voor het vermogen om negatieve getallen weer te geven.
De meest gebruikelijke methode om dit type gegevens weer te geven is een reeks bits , waarbij gebruik wordt gemaakt van het binaire systeem . De volgorde van bytes binnen de string kan variëren. De lengte of precisie is het aantal bits dat in de weergave wordt gebruikt. Een integer gegevenstype met precisie n kan maximaal 2 n waarden vertegenwoordigen; een niet-ondertekend type kan bijvoorbeeld de nummers 0 tot 2n -1 vertegenwoordigen.
Er zijn drie verschillende manieren om negatieve getallen in een binair systeem weer te geven. De meest voorkomende is " twee-complement ", waarmee u getallen van -2 (n-1) tot 2 (n-1) -1 kunt weergeven. Deze methode is handig omdat het een één-op-één overeenkomst creëert tussen waarden en representaties, en omdat het niet nodig is om onderscheid te maken tussen getekende en niet-ondertekende waarden bij optellen en aftrekken. De andere gebruikte methoden zijn die van "teken en absolute waarde" en "iemands complement" (zie de weergave van relatieve getallen ).
Algemene gegevenstypen voor gehele getallen
| Beetje | Voornaam | Domein | werkgelegenheid |
|---|---|---|---|
| 8 | Byte , octet | Ondertekend: −128 tot +127 Niet ondertekend: 0 tot +255 |
ASCII- tekens , C-teken (minimaal), Java-bytes |
| 16 | Half woord, woord | Getekend: −32.768 tot +32.767 Niet ondertekend: 0 tot +65.535 |
UCS-2 karakters , int C kort (minimum), gehele getallen C (minimum), Java karakter, Java kort |
| 32 | woord, dubbel woord (dubbel), lang | Ondertekend: −2.147.483.648 tot +2.147.483.647 Niet ondertekend: 0 tot +4.294.967.295 |
UCS-4 karakters , Ware kleur met alpha, C int (normaal), C long int (minimum), Java int |
| 64 | dubbel, lang, viervoudig woord | Met teken: van −9.223.372.036.854.775.808 tot +9.223.372.036.854.775.807 Niet ondertekend: van 0 tot +18.446.744.073.709.551.615 |
C long int (op linux 64-bit systemen [1] ), C99 long long int (minimum), Java long |
| 128 | Met bord: van −170.141.183.460.469.231.731.687.303.715.884.105.728 tot +170.141.183.460.469.231.731.687.303.715.884.105.727 Ongesigneerd : van 0 tot +340.282.366.920.938.463.463.374.607.431. 768.211 .455 |
C int __attribute__ ((mode (TI))) (op 64-bits systemen met gcc ) | |
| n | N -bit geheel getal | Gesigneerd: -2 ^ {n-1} tot 2 ^ {n-1} -1 Niet ondertekend: 0 tot 2 ^ {n} -1 |
Doorgaans ondersteunt elke CPU een klein aantal gegevenstypen, zowel ondertekend als niet-ondertekend. De bovenstaande tabel toont de typen die door de meeste processors op de hardwaremarkt worden ondersteund . Programmeertalen op hoog niveau laten bijvoorbeeld getallen toe die bestaan uit het dubbele aantal bits in vergelijking met het maximum dat door de hardware wordt ondersteund .
Sommige talen, zoals LISP , REXX en Haskell , ondersteunen "willekeurige precisie"-getallen (ook bekend als "oneindige precisie" gehele getallen of bignum ); andere talen hebben bibliotheken waarmee getallen kunnen worden weergegeven via sets van kleinere variabelen, zoals Java 's BigInteger . Deze methoden gebruiken voor de representatie van het getal zoveel geheugen als nodig is, maar het geheugen van computers is eindig, en daarom maken deze methoden het ook mogelijk om een eindige verzameling gehele getallen weer te geven. Met 8 KB geheugen is het echter mogelijk om getallen van 2466 cijfers weer te geven.
Een boolean- of vlaggegevenstype kan slechts twee waarden vertegenwoordigen: 0 en 1, meestal geassocieerd met respectievelijk false en true . Dit type kan op een enkele bit worden opgeslagen, maar over het algemeen wordt een volledige byte gebruikt voor gemakkelijke adressering en snelheid van toegang.
Een string van vier bits wordt een nibble genoemd : een daarvan komt overeen met een cijfer in hexadecimale codering en bevat een cijfer of een tekencode in binair decimaal .
Een lang geheel getal kan een positief of negatief geheel getal bevatten binnen een bereik dat gelijk is aan of groter is dan dat van een normale integer- variabele op hetzelfde platform. In de praktijk is het gebruikelijk dat een lang geheel getal dubbele of dezelfde ruimte inneemt als een normaal geheel getal, hoewel dit niet nodig is. Een variabele die is gedefinieerd met het type long integer in de ene programmeertaal kan een andere grootte hebben dan een variabele die is gedefinieerd met een vergelijkbaar type in een andere taal. Verder staat in sommige talen zoals Java de grootte vast voor alle platformen , terwijl het in andere talen afhangt van het type machine.
Het volgende is een tabel met de meest voorkomende lange gehele getallen in verschillende programmeertalen:
| programmeertaal | platform | typ naam | ruimte in bytes | Minimale waarde | maximale waarde |
|---|---|---|---|---|---|
| VB | ramen | Long |
4 | −2.147.483.648 of −2 31 |
2.147.483.647 of 2 31 −1 |
| VBA | Windows , Mac OS | Long |
4 | −2.147.483.648 of −2 31 |
2.147.483.647 of 2 31 −1 |
| VB.NET | alle platformen | long |
8 | −9.223.372.036.854.775.808
of −2 63 |
9.223.372.036.854.775.807
of 2 63 −1 |
| Java | alle platformen | long |
8 | −9.223.372.036.854.775.808
of −2 63 |
9.223.372.036.854.775.807
of 2 63 −1 |
| C # | alle platformen | long |
8 | −9.223.372.036.854.775.808
of −2 63 |
9.223.372.036.854.775.807
of 2 63 −1 |
| PHP | alle platformen | $ |
8 | −9.223.372.036.854.775.808
of −2 63 |
9.223.372.036.854.775.807
of 2 63 −1 |
De Windows API definieert het type LONGals een geheel getal van 4 bytes. Dit geldt evenzeer voor 16-, 32- en 64-bits systemen om redenen van achterwaartse compatibiliteit .
Aanwijzers
Een pointer bestaat vaak, maar niet altijd, uit een geheel getal van een bepaalde lengte. Dit wordt vaak het meest ondersteund door het systeem in hardware . De waarde van het getal is het adres waar de aanwijzer naar verwijst.
Byte en octet
De term byte verwees aanvankelijk naar de kleinste hoeveelheid adresseerbaar geheugen : in het verleden werden 5,6,7,8 en 9-bits bytes gebruikt. Er werden ook computers gemaakt die enkele bits of alleen woorden van 16 of 32 bits konden adresseren, waarvoor de term byte helemaal niet werd gebruikt.
De term "octet" verwijst alleen naar 8-bits geheugenhoeveelheden. Het wordt voornamelijk gebruikt voor computernetwerken , waar computers die meerdere formaten gebruiken mogelijk moeten communiceren.
Momenteel is de term "octet" in onbruik geraakt, samen met de andere formaten, en wordt over het algemeen aangeduid met de term "byte".
Bytes worden gebruikt om elke hoeveelheid computergegevens te meten, of het nu een tekstreeks van 50 bytes, een bestand van 100 KB, een 128 MB RAM -module of een harde schijf van 30 GB is . De voorvoegsels die voor de meeteenheden worden gebruikt, zijn vaak dezelfde als in het internationale systeem , maar de hoeveelheden zijn anders; dit is vooral belangrijk voor harde schijven, waarvan de fabrikanten hun capaciteit adverteren met SI-eenheden, waardoor ze meer capabel lijken dan ze in werkelijkheid zijn (zie het artikel over binaire voorvoegsels ).
Woord
De term woord wordt in de informatica gebruikt voor kleine groepen bits die gelijktijdig kunnen worden verwerkt door de CPU's van een bepaalde architectuur . De grootte van het woord is specifiek voor de laatste. Woorden van verschillende groottes werden gebruikt, zoals 6, 8, 12, 16, 18, 24, 32, 36, 39, 48, 60 en 64-bit. Gezien de afhankelijkheid hiervan van de architectuur, wordt de grootte van het woord bepaald door de eerste CPU van een familie, ongeacht de compatibiliteit van volgende versies. De betekenis van de afgeleide termen half woord , dubbel woord , lang woord , viervoudig woord is ook altijd afhankelijk van de CPU en het besturingssysteem . Vanaf 2004 worden 32-bits woorden het meest gebruikt in veelgebruikte computers, terwijl 64-bits woorden worden gebruikt in grote systemen. Veel embedded processors gebruiken nog steeds 8- en 16-bits woorden, terwijl 36-bits woorden, of in ieder geval niet veelvouden van 8 bits, die in de begintijd van de computer gebruikt werden, samen met niet-8-bits bytes zijn verdwenen.
Opmerkingen
- ^ Agner Fog, Calling-conventies voor verschillende C++ compilers en besturingssystemen: Hoofdstuk 3, Data Representation ( PDF ), op agner.org , 16 februari 2010. Ontvangen op 30 augustus 2010 .