🇺🇦Допомогти Україні

Що таке integer overflow?

Обкладинка допису: Що таке integer overflow?
ЗмістНатисність на посилання, щоб перейти до потрібного місця
Ви маєте є лічильник, який може рахувати лише до певного числа. Наприклад, кишеньковий калькулятор, який показує максимум 999. Якщо спробуєте додати 1 до 999, він не зможе показати 1000 - цифри просто "переповняться" (overflow) і калькулятор покаже щось зовсім інше, наприклад 000.
У програмуванні такий ефект називають integer overflow (переповнення цілого числа).
Це відбувається, коли число стає більшим за максимальне значення, яке може зберегти обраний тип змінної.
Наприклад, якщо змінна int може зберігати числа до 2,147,483,647, то додавання 1 зробить її значення… негативним!

Чому 2,147,483,647 - це "стеля" для 32-бітного числа

У комп’ютері числа зберігаються в бінарному вигляді (тобто як послідовність нулів і одиниць).
"32-бітний" означає, що для зберігання числа виділяється 32 комірки, і в кожній може бути або 0, або 1.
Але якщо число signed (зі знаком), то одна з цих комірок зарезервована для знаку:
  • 0 у першому біті — число додатне,
  • 1 у першому біті — число від’ємне.
Тобто замість 32 біт для величини числа залишається лише 31 біт.
Максимальне значення
Коли всі 31 біти (крім знакового) заповнені одиницями, ми отримуємо найбільше можливе додатне число:
1111111111111111111111111111111 (31 одиниця)
У десятковій системі це якраз 2,147,483,647.
У шістнадцятковій (hex) формі це записується як 0x7FFFFFFF:
  • 7 — це бінарно 0111 (тобто знак 0 + три одиниці),
  • F — це бінарно 1111 (чотири одиниці),
  • і так далі до кінця.
Через це в програмах іноді трапляються дуже дивні помилки, а в історії навіть були серйозні аварії через переповнення. Трапляються навіть меми через помилку integer overflow, але це не точно.

Цей допис поки що не має жодних доповнень від автора/ки.

Що таке формат HEIC і чому просто перейменовувати його в .jpg — погана ідея
15 черв., 18:17

Що таке формат HEIC і чому просто перейменовувати його в .jpg — погана ідея

meme code
meme code@memecode
Чому вибір CMS важливий під час розробки сайту?
29 черв., 12:34

Чому вибір CMS важливий під час розробки сайту?

meme code
meme code@memecode
Помилка 403 на сайті: що це означає і як її усунути
24 лип., 23:50

Помилка 403 на сайті: що це означає і як її усунути

meme code
meme code@memecode
Що таке вайб-кодинг?
25 лип., 21:51

Що таке вайб-кодинг?

meme code
meme code@memecode
Що таке комбінаторний вибух?
28 лип., 11:50

Що таке комбінаторний вибух?

meme code
meme code@memecode
Що таке мозковий стек (brain stack)?
28 лип., 19:37

Що таке мозковий стек (brain stack)?

meme code
meme code@memecode