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

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

Пример: сложение двух переменных размером 8 бит с записью результата в переменную того же размера:

210_{10} + 61_{10} = 11010010_{2} + 00111101_{2} = ?



\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}

возникает переполнение.

При этом в результат записывается не ожидаемое 271_{10} = {\color{Red}1}00001111_2, а 15_{10} = 00001111_2. Если не проверять, было ли переполнение, то может возникнуть логическая ошибка в программе, о чём в некоторых случаях во время исполнения не узнает ни платформа, ни операционная система (как, например, в Java).

См. также[править | править вики-текст]