Što je aritmetičko prelijevanje?

Aritmetičko prelijevanje je stanje koje se javlja u računalima, posebno u području računalnog programiranja, kada izračun ili operacija daju rezultat koji je prevelik za pohranu sustava ili registra za rukovanje. Prekoračenje se također može odnositi na količinu po s danim rezultatom premašuje memoriju koja je određena za pohranu. U nekim slučajevima, višak podataka može biti pohranjen na drugom mjestu za pohranu podataka; u drugima, može uzrokovati pad programa, sporo pokretanje ili netočne rezultate. Aritmetičko prekoračenje nije ograničeno na potpuna osobna ili poslovna računala, budući da jednostavni ručni kalkulatori i komunikacijski uređaji također imaju ograničenja veličine vrijednosti koje mogu podnijeti.

Programeri imaju tendenciju naučiti metode rješavanja grešaka aritmetičkog prekoračenja rano u svom obrazovanju, budući da su one obično vrlo česte programske pogreške. Postoji mnogo različitih metoda za predaju aritmetičkog prekoračenja. Dizajn programa igra vrlo važnu ulogu; dobro osmišljen program koji koristi dosljedne i ispravne vrste podataka i duljine ne bi trebao imati takve pogreške. Ako se velika pažnja posveti provjeravanju redoslijeda operacija i održavanju sve dosljednosti, pogreške prekoračenja mogu se u potpunosti izbjeći.

Drugi način rješavanja grešaka aritmetičkog prekoračenja je rastavljanje operacija na manje korake. Često je sustavu lakše rukovati jednostavnim, malim operacijama nego složenim operacijama koje uključuju velike brojeve i pretjerane izračune. Kada nije iznimno važno da je vraćeni broj potpuno točan, ponekad će biti dovoljno program napisati na način da obavijesti korisnika o pogrešci prekoračenja, ali svejedno vrati vrijednost. Najčešći način rješavanja aritmetičke pogreške prekoračenja je potpuno zanemarivanje. Iako je to obično bezopasno, može dati netočne rezultate i ugroziti korisnost i učinkovitost programa.

Ariane 5, let 501 jasno ilustrira opasnosti od aritmetičkih grešaka prekoračenja. Let je bio prvo probno pokretanje europskog sustava za lansiranje Ariane 5, koji je ponovno koristio veći dio koda iz starog Ariane 4 sustava. Međutim, ubrzanje Arianea 5 bilo je znatno veće od Arianea 4, a programiranje nije bilo primjereno da se nosi s većim potrebnim vrijednostima. Kao takva, raketa je napustila planiranu putanju leta 37 sekundi nakon lansiranja i morala je biti uništena. Ova jednostavna programska pogreška koštala je stotine milijuna američkih dolara.