Арифметичне переповнення

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Приклад: додавання двох змінних розміром 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).

Див. також[ред.ред. код]