Heltal (datatype)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 26. marts 2022; checks kræver 7 redigeringer .

Heltal , heltal datatype ( engelsk  heltal ) er en af ​​de simpleste primitive datatyper . Tjener til at repræsentere heltal , begrænset af en minimums- og maksimumværdi, afhængigt af den hukommelse, der er allokeret til tallet.

Sorter

Som regel bruges der til de fleste opgaver en heltalstype, også kaldet native int (eller blot int ), med en ordbredde lig med ordlængden af ​​den processor, som programmet kører på (eller processorens driftstilstand, hvis den kan arbejde med maskinord af forskellig længde) . Om nødvendigt kan heltal af både mindre (f.eks. om nødvendigt for at spare hukommelse) og større (når der bruges lang aritmetisk ) bitdybde bruges. En anden mulig grund til at bruge heltal med ikke-native længde er at sikre dataportabilitet . De mest almindelige sorter af det hele:

Hvis du har brug for at spare hukommelse, men der ikke er behov for at repræsentere negative tal, kan heltal uden fortegn bruges, hvilket giver dig mulighed for at fordoble den maksimalt mulige værdi og med en mere: for eksempel kan et tal fra 0 til 65 535 repræsenteres som et kort heltal uden fortegn . Nogle gange er der i litteraturen [1] anbefalinger om ikke at bruge heltal uden fortegn, da det muligvis ikke implementeres af computerprocessoren . Desuden mangler understøttelse af usignerede typer i nogle programmeringssprog, såsom Java [2] .

Brugen af ​​heltal uden fortegn er berettiget i algoritmer, der bruger heltalsoverløb - faktum er, at optimering af compilere kan ændre rækkefølgen af ​​operationer og udføre algebraiske transformationer, som et resultat af, at overløbet i den optimerede algoritme kan forekomme på et andet tidspunkt end i den ikke-optimerede, eller slet ikke, hvilket fører til udefineret adfærd . For heltal uden fortegn er optimeringer, der påvirker aritmetisk overløb, deaktiveret, så overløbsadfærd altid er defineret, men compiler-genereret indbygget kode bliver mindre optimal.

Præsentation

I hukommelsen er et heltal lagret som en sekvens af bits opdelt i bytes (oktetter). Byterækkefølgen kan enten være direkte ( eng.  big-endian ), fra den mest signifikante bit til den mindst signifikante, eller omvendt ( eng.  little-endian ).

Skiltrepræsentationen kan også være forskellig for forskellige arkitekturer . Den mest almindelige er den såkaldte tillægskode , hvor et negativt tal er repræsenteret ved at trække fra 0 med overløb, mens hvis den høje bit af den høje byte er slået til, betragtes tallet som negativt. Mindre almindeligt anvendte er den omvendte kode (når et negativt tal er repræsenteret som den bitvise inverse af et positivt), den direkte kode (når et negativt tal er repræsenteret som et positivt tal med fortegnsbit slået til) eller mere eksotiske såsom grundtallet −2 talsystemet [3] .

Lommeregnere og nogle tidlige computere brugte også BCD - repræsentation af heltal . En sådan kode forenkler displayenheden og gør repræsentationen af ​​et tal i hukommelsen mere læselig for mennesker, men komplicerer den aritmetisk-logiske enhed og kræver mere hukommelse for at repræsentere de samme tal.

Operationer på heltal

Aritmetiske operationer

Aritmetiske operationer er primært anvendelige til heltalsværdier. Nedenfor er de mest almindeligt anvendte (deres betegnelser i forskellige programmeringssprog og lignende værktøjer er angivet i parentes).

I nogle programmeringssprog, for kortheds skyld, er der operatorer, der giver dig mulighed for at udføre en aritmetisk operation med en tildeling. For eksempel +=tilføjer " " den aktuelle værdi af variablen til venstre med udtrykket til højre og placerer resultatet i den oprindelige variabel. I nogle sprog og miljøer er den kombinerede operation MulDiv også tilgængelig , som ganges med et tal og derefter dividerer resultatet med det andet.

Normalt er de dyreste operationer med hensyn til hastighed multiplikation og division (at få resten af ​​divisionen).

I computerhukommelsen er celler af en fast størrelse sædvanligvis tildelt til lagring af heltal. På grund af dette kan stigninger og formindskelser føre til overløb, hvilket resulterer i et forvrænget resultat. Nogle programmeringssprog giver dig mulighed for at kaste en undtagelse i sådanne tilfælde. Derudover kan du definere overløbsadfærd:

Bitvise operationer

Ud over matematiske kan bitoperationer anvendes på heltal , som er baseret på funktionerne ved positionel binær kodning. Normalt udføres de meget hurtigere end aritmetiske operationer, og derfor bruges de som mere optimale analoger.

Arbejde med strenge

Ganske hyppige operationer er at få en streng fra en numerisk værdi i den interne repræsentation og omvendt - et tal fra en streng. Når du konverterer til en streng, er formateringsværktøjer normalt tilgængelige afhængigt af brugerens sprog.

Nedenfor er nogle af strengrepræsentationerne af tal.

Optalt type

Heltal inkluderer også en opregnet type. . Opregnede typevariabler tager et begrænset foruddefineret sæt værdier. Størrelsen af ​​et sæt er ikke bestemt af antallet af bytes, der bruges til at repræsentere heltalværdierne for variabler af denne type.

For eksempel i Python er boolean en undertype af heltal og bruger navnene False og True, som, når de castes til et heltal, får værdierne 0 og 1, henholdsvis [4] .

Noter

  1. Ben-Ari, 2000 , s. 54.
  2. Typer, værdier og variabler , Java Language Specification, 2. udg.
  3. Hacker's Delight, 2004 , s. 215-221.
  4. Beazley, 2009 , s. 38.

Litteratur