Co se stane, když výsledek matematické operace je větší, než rozsah výsledného čísla?
Co když chcete sečíst 100 + 54 a uložit jej do bajtu, který pracuje ve dvojkovém doplňku? Bajt ve dvojkovém doplňku dovoluje pouze hodnoty od -128 do +127. Číslo 154 se tam nevejde.
Máte na výběr.
- Výsledek můžete uložit do čísla s větším rozsahem, například jako integer (232)
- Výsledek se pokusíte narvat do bajtu – dojde k přetečení
Přetečení je to, co se stane, když výsledek operace přesahuje rozsah, do kterého se číslo vejde. (Podtečení je totéž ale na druhou stranu, když je číslo menší, než je záporná hranice čísla.)
100 + 54 = 154 matematicky vypadá takto.
- 100 = 11001000
- 54 = 110110
- 154 = 10011010
Jenže ve dvojkovém doplňku to vypadá jinak!
- 100 = 11001000
- 54 = 00110110
154= 10011010 = -102
Není to problém?
To záleží.
Jako ajťák musíte dobře znát nástroje, se kterými pracujete.
Některé programovací jazyky považují přetečení/podtečení za chybu, kvůli které aplikace spadne a některé považují přetečení/podtečení za vlastnost výpočetní techniky, se kterou je nutné počítat.