Арифметическое переполнение
Арифмети́ческое переполне́ние — специфичная для компьютерной арифметики ситуация, когда при арифметическом действии результат становится больше максимально возможного значения для переменной, использующейся для хранения результата.
Пример: сложение двух переменных размером 8 бит с записью результата в переменную того же размера:
[math]\displaystyle{ 210_{10} + 61_{10} = 11010010_{2} + 00111101_{2} = ? }[/math]
[math]\displaystyle{
\begin{array}{c}
\begin{array}{cc}
+ & \begin{array}{c}
11010010_{2} \\
00111101_{2}
\end{array}\\
\end{array}\\
\hline
\begin{array}{cc}
& {\color{Red}1}00001111_{2}
\end{array}
\end{array}
}[/math]
возникает переполнение.
При этом в результат записывается не ожидаемое [math]\displaystyle{ 271_{10} = {\color{Red}1}00001111_2 }[/math], а [math]\displaystyle{ 15_{10} = 00001111_2 }[/math]. Если не проверять, было ли переполнение, то может возникнуть логическая ошибка в программе, о чём в некоторых случаях во время исполнения не узнает ни платформа, ни операционная система (как, например, в Java).
См. также
В статье не хватает ссылок на источники (см. также рекомендации по поиску). |