Heltal (Computer)

Fra Wikipedia, den frie encyklopædi
Spring til navigation Spring til søgning

Hvordan heltal (på engelse integer) bliver repræsenteret internt i computeren afhænger af programmeringssprog, computerteknologi og computeralder. Disse ting har også betydning for hvor store tal computeren kan håndtere.

Intern repræsentation[redigér | redigér wikikode]

I moderne computere bliver heltal oftest gemt som 2s-komplement eller en streng af tegn. Dette afhængig blandt andet af programmeringssproget. I programmeringssproget C bliver heltalsværdier gemt som 2s-komplement. Afhængig af programmeringssproget vil der være grænser for hvor store og små tal man kan regne med. I programmeringssproget LISP er der ingen begrænsning på størrelsen af heltal.

Når tallet bliver gemt som 2s-komplement er der afsat fast størrelse på forhånd og størrelsen vil da være begrænset til 2^15 (-32768..32767), 2^23 (-8.388.608..8.388.607), 2^31 (-2.147.483.648..2.147.483.647), 2^63 (-9.223.372.036.854.775.808..9.223.372.036.854.775.807) eller 2^127 afhængig af antallet af bits. I gamle computer er BCD (tal) repræsentation også anvendt.


2s-komplement[redigér | redigér wikikode]

Når et tal er gemt i 2s-komplement vil det mestbetydendebit kaldes fortegnsbit. Et "1" indikerer af tallet er negativt. Hvis man har 8 bit til rådighed kan man repræsenterer tal i området -128..127. Uanset antallet af bit vil man kunne repræsenterer en negativ værdi hvis absolutte værdi er en større end den tilsvarende positive værdi.

2s-komplement
Heltal Binær værdi
+17 0001.0001
+2 0000.0010
0 0000.0000
-2 1111.1110
-17 1110.1111


Eksempel på 2s-komplement[redigér | redigér wikikode]

Heltalsværdi 169:

16 bit computer ord
Bit nummer 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bit værdi 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1


Heltalsværdi -169:

16 bit computer ord
Bit nummer 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Bit værdi 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1

Tegnstrengs repræsentation[redigér | redigér wikikode]

Når tallet gemmes i en tegnstreng vil hver ciffer i tallet (10 tals system) optage et tegn i tegnstrengen. Tegnstrengen vil være indkodet i samme tegnsæt som i øvrigt anvendes på computeren. I eksemplerne her anvendes ASCII alfabetet.

Eksempel på Tegnstrengs repræsentation[redigér | redigér wikikode]

Heltalsværdi 169:

byte nummer 1. 2. 3.
ASCII "1" "6" "9"
Bit nummer 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Bit værdi 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1


Heltalsværdi -169:

byte nummer 1. 2. 3. 4.
ASCII "-" "1" "6" "9"
Bit nummer 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Bit værdi 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 1


BCD repræsentation[redigér | redigér wikikode]

BCD er en teknik hvor tallet gemmes i et ti-tals talsystem. Hver ciffer fylder 4 bit svarende til bitværdierne (0000..1001). Bitværdien for 12 (1100) kan benyttes til at angive at tallet er positivt, medens bitværdien for 13 (1101) benyttes til at angive negative tal. De øvrige bitværdier (1010, 1011, 1110 og 1111) udnyttes ikke. Fordelen ved BCD er at det meget let at udlæse værdien, men det er mindre effektivt ved beregninger. Teknikken er en gammel teknik som ikke anvendes ret meget i dag.

Eksempel på BCD repræsentation[redigér | redigér wikikode]

Heltalsværdi 169:

nibbel nummer (4 bit) 1. 2. 3.
Ciffer værdi "1" "6" "9"
Bit nummer 3 2 1 0 3 2 1 0 3 2 1 0
Bit værdi 0 0 0 1 0 1 1 0 1 0 0 1

Heltalsværdi -169:

nibbel nummer (4 bit) 1. 2. 3. 4.
Ciffer værdi "-" "1" "6" "9"
Bit nummer 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0
Bit værdi 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1

Man kan også placere fortegnet som det sidste tegn.

Se også[redigér | redigér wikikode]