Heltal , heltalsdatatyp ( engelsk heltal ) är en av de enklaste primitiva datatyperna . Tjänar för att representera heltal , begränsat av ett lägsta och högsta värde, beroende på minnet som tilldelats för numret.
Som regel används för de flesta uppgifter en heltalstyp, även kallad native int (eller helt enkelt int ), med en ordbredd lika med ordlängden på processorn som programmet körs på (eller processorns driftläge om det kan arbeta med maskinord av olika längd) . Vid behov kan heltal av både mindre (till exempel, om nödvändigt, för att spara minne) och större (när långa aritmetiska ) bitdjup används. En annan möjlig anledning till att använda heltal av icke-naturlig längd är att säkerställa dataportabilitet . De vanligaste sorterna av det hela:
Dessutom, om du behöver spara minne, men det inte finns något behov av att representera negativa tal, kan heltal utan tecken användas, vilket gör att du kan dubbla det maximala möjliga värdet och med ett till: till exempel kan ett tal från 0 till 65 535 representeras som ett kort heltal utan tecken . Ibland finns det i litteraturen [1] rekommendationer att inte använda heltal utan tecken, eftersom det kanske inte implementeras av datorprocessorn . Dessutom saknas stöd för osignerade typer i vissa programmeringsspråk, som Java [2] .
Användningen av heltal utan tecken är motiverad i algoritmer som använder heltalsspill - faktum är att optimering av kompilatorer kan ändra ordningen på operationer och utföra algebraiska transformationer, som ett resultat av vilket överflödet i den optimerade algoritmen kan inträffa vid ett annat ögonblick än i den icke-optimerade, eller inte alls, vilket leder till odefinierat beteende . För heltal utan tecken inaktiveras optimeringar som påverkar aritmetiskt spill, så att spillbeteende alltid definieras, men kompilatorgenererad inbyggd kod blir mindre optimal.
I minnet lagras ett heltal som en sekvens av bitar uppdelade i byte (oktetter). Byteordningen kan vara antingen direkt ( eng. big-endian ), från den mest signifikanta biten till den minst signifikanta, eller omvänd ( eng. little-endian ).
Teckenrepresentationen kan också skilja sig åt för olika arkitekturer . Den vanligaste är den så kallade tilläggskoden , där ett negativt tal representeras genom att subtrahera från 0 med overflow, medan om den höga biten i den höga byten är på så anses talet vara negativt. Mindre vanligt förekommande är den omvända koden (när ett negativt tal representeras som bitvis invers av ett positivt), den direkta koden (när ett negativt tal representeras som ett positivt tal med teckenbiten påslagen) eller mer exotiska. såsom basen −2 talsystemet [3] .
Miniräknare och några tidiga datorer använde också BCD - representation av heltal . En sådan kod förenklar displayenheten och gör representationen av ett tal i minnet mer läsbar för människor, men komplicerar den aritmetiskt-logiska enheten och kräver mer minne för att representera samma tal.
Aritmetiska operationer är främst tillämpliga på heltalsvärden. Nedan är de mest använda (deras beteckningar i olika programmeringsspråk och liknande verktyg anges inom parentes).
I vissa programmeringsspråk finns det för korthets skull operatorer som låter dig utföra en aritmetisk operation med en tilldelning. Till exempel, " +=" lägger till det aktuella värdet av variabeln till vänster med uttrycket till höger och placerar resultatet i den ursprungliga variabeln. I vissa språk och miljöer är den kombinerade operationen MulDiv tillgänglig , som multiplicerar med ett tal och sedan dividerar resultatet med det andra.
Vanligtvis är de dyraste operationerna när det gäller hastighet multiplikation och division (att få resten av divisionen).
I datorminne allokeras vanligtvis celler av en fast storlek för att lagra heltal. På grund av detta kan ökningar och minskningar leda till översvämning, vilket resulterar i ett förvrängt resultat. Vissa programmeringsspråk tillåter dig att göra ett undantag i sådana fall. Dessutom kan du definiera översvämningsbeteende:
Förutom matematiska är bitoperationer tillämpliga på heltal , som är baserade på funktionerna i positionell binär kodning. Vanligtvis utförs de mycket snabbare än aritmetiska operationer och därför används de som mer optimala analoger.
Ganska frekventa operationer är att få en sträng från ett numeriskt värde i den interna representationen och vice versa - ett tal från en sträng. När du konverterar till en sträng är formateringsverktyg vanligtvis tillgängliga beroende på användarens språk.
Nedan listas några av strängrepresentationerna av tal.
Heltal inkluderar också en uppräknad typ. . Uppräknade typvariabler tar en ändlig fördefinierad uppsättning värden. Storleken på en uppsättning bestäms inte av antalet byte som används för att representera heltalsvärdena för variabler av denna typ.
Till exempel, i Python är boolean en undertyp av heltal och använder namnen False och True, som, när de casts till ett heltal, får värdena 0 respektive 1 [4] .
Datatyper | |
---|---|
Otolkbart | |
Numerisk | |
Text | |
Referens | |
Sammansatt | |
abstrakt | |
Övrig | |
Relaterade ämnen |