Skip to main content

Co to jest przepełnienie arytmetyczne?

Przepełnienie arytmetyczne jest warunkiem występującym w komputerach, szczególnie w obszarze programowania komputerowego, gdy obliczenia lub operacja daje wynik zbyt duży, aby system przechowywania lub rejestr.Przepełnienie może również odnosić się do kwoty z danym wynikiem przekracza pamięć oznaczoną do przechowywania.W niektórych przypadkach przepełnienie danych może być przechowywane w innej lokalizacji przechowywania danych;W innych może to spowodować awarię programu, uruchamianie powoli lub przynoszenie niedokładnych rezultatów.Przelew arytmetyczny nie jest ograniczony do pełnych komputerów osobistych lub biznesowych, ponieważ proste kalkulatory ręczne i urządzenia komunikacyjne mają również ograniczenia wartości wartości, które mogą obsłużyć.

Programiści mają tendencję do uczenia się metod radzenia sobie z błędami przelewu arytmetycznego wcześnie we edukacji, jakZwykle są to bardzo powszechne błędy programowania.Istnieje wiele różnych metod przekazywania przelewu arytmetycznego.Projekt programu odgrywa bardzo ważną rolę;Dobrze zaprojektowany program, który wykorzystuje spójne i poprawne typy danych i długości, nie powinien doświadczać takich błędów.Jeśli stara się sprawdzić kolejność operacji i utrzymując wszystko spójne, można całkowicie uniknąć błędów przepełnienia.

Innym sposobem radzenia sobie z błędami przepełnienia arytmetycznego jest rozbicie operacji na mniejsze kroki.Systemowi często łatwiej jest obsługiwać proste, małe operacje niż złożone operacje obejmujące duże liczby i nadmierne obliczenia.Gdy nie jest niezwykle ważne, aby liczba zwrócona była całkowicie dokładna, czasami wystarczy zapisać program w taki sposób, że powiadamia użytkownika o błędach przepełnienia, ale i tak zwraca wartość.Najczęstszym sposobem radzenia sobie z błędem przepełnienia arytmetycznego jest całkowite zignorowanie go.Chociaż jest to zwykle nieszkodliwe, może dawać nieprawidłowe wyniki i może zagrozić użyteczności i wydajności programu.

Ariane 5 Flight 501 wyraźnie ilustruje zagrożenia związane z błędami przepełnienia arytmetycznego.Lot był pierwszym testem europejskiego systemu startowego European Ariane 5, który ponownie wykorzystywał znaczną część kodu ze starego systemu Ariane 4.Przyspieszenie Ariane 5 było jednak znacznie większe niż w Ariane 4, a programowanie nie było wystarczające do obsługi wyższych potrzebnych wartości.W związku z tym rakieta opuściła zamierzoną ścieżkę lotu 37 sekund po wystrzeleniu i musiała zostać zniszczona.Ten prosty błąd programowania kosztuje setki milionów dolarów amerykańskich.