Арифметическое переполнение

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Арифмети́ческое переполне́ние — специфичная для компьютерной арифметики ситуация, когда при арифметическом действии результат становится больше максимально возможного значения для переменной, использующейся для хранения результата.

Пример: сложение двух переменных размером 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).

См. также