Skip to main content

Co je to aritmetický přetečení?

Aritmetický přetečení je stav, který se vyskytuje v počítačích, zejména v oblasti počítačového programování, když výpočet nebo operace poskytuje výsledek, který je příliš velký pro úložný systém nebo se zaregistrovat.Přetečení může také odkazovat na částku při daném výsledku přesahuje paměť určenou pro ukládání.V některých případech může být přetečení dat uložen na jiném místě úložiště dat;V jiných to může způsobit, že program narazí, pomalu spustí nebo přinese nepřesné výsledky.Aritmetický přetečení není omezeno na plné osobní nebo obchodní počítače, protože jednoduché kapesní kalkulačky a komunikační zařízení mají také limity na velikost hodnot, které zvládnou.Mají tendenci být velmi běžnými programovacími chybami.Existuje mnoho různých metod předání aritmetického přetečení.Návrh programu hraje velmi důležitou roli;Dobře navržený program, který používá konzistentní a správné typy dat a délky, by neměl zažít takové chyby.Pokud je věnována velká péče při kontrole pořadí operací a udržení všeho konzistentního, lze se zcela vyhnout přepadovým chybám.Pro systém je často snazší zvládnout jednoduché, malé operace než složité operace zahrnující velké množství a nadměrné výpočty.Pokud není nesmírně důležité, aby bylo vrácené číslo zcela přesné, někdy bude stačit k psaní programu takovým způsobem, že oznámí uživateli chyby přetečení, ale přesto vrátí hodnotu.Nejběžnějším způsobem, jak zvládnout chybu přetečení aritmetiky, je úplně ji ignorovat.I když je to obvykle neškodné, může to přinést nesprávné výsledky a může ohrozit užitečnost a efektivitu programu.

Ariane 5 Flight 501 jasně ilustruje nebezpečí aritmetických přetečených chyb.Let byl prvním testovacím během evropského vypouštěcího systému Ariane 5, který znovu použil většinu kódu ze starého systému Ariane 4.Zrychlení Ariane 5 však bylo výrazně větší než zrychlení Ariane 4 a programování nebylo dostatečné pro zvládnutí potřebných hodnot.Raketa jako taková opustila zamýšlenou letounskou cestu 37 sekund po spuštění a musela být zničena.Tato jednoduchá chyba programování stojí stovky milionů amerických dolarů.