Heltal (Computer)

Fra Wikipedia, den frie encyklopædi
Gå til: navigation, søg

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 karakterstreng. 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

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

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

Eksempel på Karakterstrengs 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ærdierne (1010..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

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