Aritmetisk overløp

Et aritmetisk overløp er et problem knyttet til operasjonene som utføres på tall av en datamaskin . Problemet skyldes datamaskiners manglende evne til å lagre vilkårlig store tall. Det oppstår når resultatet av en operasjon mellom tall overskrider den maksimale verdien som kan representeres med n faste biter tilgjengelig i minnet.

Beskrivelse

Hver bit kan per definisjon utelukkende anta verdiene 1 og 0; med n tilgjengelige biter kan vi lagre en maksimal verdi lik (2 ^ n) -1 (eksempel: for n = 4 er den maksimale representable verdien (2 ^ 4) -1, dvs. 15, hvis binære representasjon er 1111 ) . I det gitte eksemplet ville overløp oppstå hvis 1 ble lagt til dette tallet (1111). Verdien som ble oppnådd ville blitt "1 0000" (16, i henhold til desimalsystemet ), umulig å representere på 4 biter. Siden antall tilgjengelige biter er forhåndsinnstilt (i vårt tilfelle er det 4, mindre enn 5), vil den mest signifikante biten gå tapt. Den lagrede verdien vil derfor bli "0000", som koder for verdien 0 (derfor ikke 16).

Overløp oppnås vanligvis ved å legge til to ekstremt store positive tall, hvoretter maskinen returnerer et negativt (matematisk absurd) resultat. På samme måte, i tilfelle av summer mellom to ekstremt små negative tall, kan et positivt tall forventes som et resultat (i dette tilfellet vil det være et underløp ). Den ekstra biten som "kastes" av maskinen representerer ofte tegnet på tallet (1 hvis det er negativt), så i overløpet mister tallet fortegnet og blir positivt når kanskje et negativt var forventet (eller omvendt).

2s komplement

2-komplementet er en datamaskinmetode for numerisk representasjon som ofte brukes for å lette addisjons- og differanseoperasjoner mellom relative tall. Antall bits beregnet for representasjon er forhåndsinnstilt av programmereren i den såkalte variabeldeklarasjonsfasen , samt av selve programmeringsspråket og av maskinen som koden utføres på. For algebraiske summer av binære tall representert i 2s komplement oppstår overløp når:

Relaterte elementer