Heltall er alle naturlige tall (1, 2, 3, 4...) og deres negative verdier (-1, -2, -3, -4...), samt 0. Heltall omfatter altså ikke tall med desimaler. I datamaskiner lagres (representeres) heltall som et antall binære siffer (0 eller 1) i to-tallsystemet. Ett siffer lagres i én bit. Hvilket verdiområde som dekkes (altså fra minste til største tall) bestemmes av antall bit (for eksempel 8 bit, 16 bit, 32 bit eller 64 bit) og om det skal lagre bare positive heltall, eller både positive og negative heltall. Negative heltall kan lagres på tre forskjellige måter, og «komplementær to-form» har blitt den dominerende metoden.

Faktaboks

Også kjent som

Engelsk: integer, unsigned integer eller signed integer

Lagringsformatet (representasjonen) har betydning når data deles og flyttes mellom maskiner.

Binære tall

I digital representasjon er grunntallet 2 og et binært siffer kan ta to verdier: 0 og 1. Vekten til et siffer bestemmes av sifferets posisjon i det binære tallet, og er \(2^p\) hvor \(p\) er posisjon. En starter med posisjon 0 som er lengst til høyre i tallet. Vekten dobles for hver posisjon en går til venstre.

Figuren under viser hvordan tallet 75 kan representeres binært som 01001011 ved hjelp av 8 bit.

\( \begin{array}{ccccccccl} 7&6&5&4&3&2&1&0& \texttt{ posisjon}\\ 2^7&2^6&2^5&2^4&2^3&2^2&2^1&2^0& \texttt{ vekt}\\ 128&64&32&16&8&4&2&1& \texttt{ vekt, desimaltall} \\ 0&1&0&0&1&0&1&1& \texttt{ binærtall: 64+8+2+1=75} \end{array} \)

Addisjon av binære tall

Operasjonen addisjon er sentral fordi operasjonen subtraksjon også kan løses ved addisjon. Eksempel: \( 7 – 3 \equiv 7+(-3) = 4 \). Tegnet \( \equiv \) leses som «ekvivalent med» eller «er det samme som».

Under viser vi to eksempler på addisjon av binære tall:

\( \begin{array}{r@{:}cccccr} \texttt{mente} & &\tiny{1} & \tiny{1} & \tiny{1} & & \texttt{dv} \\ &&0&1&1&1 & 7 \\ \texttt{+} &&0&1&0&1&5\\ \texttt{sum} &&1&1&0& 0 & 12 \end{array} \texttt{ } \begin{array}{r@{:}cccccr} \texttt{mente} & \tiny{1} &\tiny{1} & \tiny{0} & \tiny{1} & & \texttt{dv} \\ &&1&1&0&1 & 13 \\ \texttt{+} &&0&1&0&1&5\\ \texttt{sum} &1&0&0&1& 0 & 18(2) \end{array} \)

Kolonnene med overskrift \( \texttt{dv} \) viser binærtallets desimale verdi. I det siste eksemplet har vi addert to tall som gir et større resultat enn det er plass til i fire bit. Denne situasjonen kalles overflyt, som er direkte oversatt fra engelske «overflow». Ved overflyt får en ikke riktig resultat, derfor står det 2 i parentesen etter 18. CPU-er har en egen instruksjon som kan teste om siste addisjon har gitt overflyt.

Tall lagret som tekst

Tall i tekst er lagret som tekst, det vil si at hvert tegn har sin tegnkode. I tegnsettet ASCII har de desimale sifrene 0 til 9 tegnkodene fra 48 til 57. Før en skal gjøre beregninger med tall på tekstlig form er det nødvendig å konvertere fra desimal til binær form, altså en konvertering fra et tall i ti-tallsystemet til et tall i to-tallsystemet.

Verdiområder for positive heltall

En enkel og praktisk huskeregel er at ti binære sifre gir omtrent tre desimale sifre. Med ti bit kan vi lagre tall opp til 1000. Med 20 bit er største tallet 1 million og med 30 bit er største tallet 1 milliard.

Alle sifferposisjoner brukes til å bestemme tallverdien. Et binært tall med \(n\) siffer kan representere verdier i området \( 0 \texttt{ til } 2^n-1 \). For vanlige ordlengder får vi da følgende verdiområder:

Verdiområder for positive heltall
antall siffer verdiområde datatype
8 0 til 255 char
16 0 til 65 535 ushort
32 0 til 4 294 967 295 uint
64 0 til 18 446 744 073 709 551 615 ulong

Negative heltall

Når en lagrer negative og positive heltall tolkes mest signifikante bit (høyeste posisjon) som fortegn: 0 for positive heltall og 1 for negative heltall.

Negative tall kan representeres på tre måter:

  1. Fortegn pluss verdi
  2. Invertering av den positive ekvivalent
  3. «Two's complement» (komplementær to-form)

1. Fortegn pluss verdi

Fortegnet er negativt (1) de andre bitene brukes på vanlig måte til å representere tallets verdi. For eksempel -2 skrives slik: 1 010.

2. Invertering av den positive ekvivalent

Dette innebærer at alle bitene inverteres: 0 blir 1 og 1 blir 0. Tallet 2 skrives slik binært når vi bruker fire bit: 0010. -2 blir da: 1101. Denne lagringsformen fører også til at en får to verdier for 0: 0000 = +0 og 1111= -0.

Lagringsformen kalles «one's complement» eller «komplementær en-form», og ble brukt av datamaskiner som var vanlige i Norge i perioden 1960-1990, for eksempel UNIVAC 1100-serien, CDC 3000 og 6000 seriene og PDP-1.

3. «Two's complement» — komplementær to-form

Det negative tallet representeres som den inverterte formen («one's complement») pluss 1. Dermed unngår man åpentbart to former for 0, og i tillegg får en enklere elektronikk for å utføre de vanlige regneoperasjonene addisjon og subtraksjon.

La oss først se på representasjonen av -2:

\( \begin{array}{r@{:}ccccl} +2 &0&0&1&0& \\ \bar{2} &1&1&0&1& \texttt{invertert}\\+1 &0&0&0&1& \texttt{adder 1}\\=-2 &1&1&1&0& \\ \end{array} \)

Den positive ekvivalenten av -2 som er +2 blir først invertert, deretter adderes 1 til det inverterte tallet.

For å demonstrere at lagringsformen fungerer viser vi to eksempler. Først adderer vi 4 og -2:

\( \begin{array}{r@{:}cccc} 4&0&1&0&0 \\ +(-2) &1&1&1&0\\ =2&0&0&1&0 \end{array} \)

Og en ny test: -2+(-2):

\( \begin{array}{r@{:}cccc} -2&1&1&1&0\\ +(-2)&1&1&1&0\\ =-4&1&1&0&0 \end{array} \)

Komplementær to-form har blitt den dominerende måte å lagre heltall på. Både addisjon og subtraksjon kan utføres som addisjon når heltall er lagret på denne måten. Norsk Data (1967-1992) sine Nord-maskiner lagret heltall ved hjelp av komplementær to-form.

Verdiområder

Med \(n\) bit til rådighet er tallområdet \( \pm 2^{n-1}-1\) for de to lagringsformatene: lagring med fortegn pluss absoluttverdi og komplementær en-form. Verdiområdet med komplementær to-formlagring er \( -2^{n-1} \) til \( 2^{n-1}-1\).

Les mer i Store norske leksikon

Kommentarer

Kommentarer til artikkelen blir synlig for alle. Ikke skriv inn sensitive opplysninger, for eksempel helseopplysninger. Fagansvarlig eller redaktør svarer når de kan. Det kan ta tid før du får svar.

Du må være logget inn for å kommentere.

eller registrer deg