Table of contentsClick link to navigate to the desired location
This content has been automatically translated from Ukrainian.
You have a counter that can only count up to a certain number. For example, a pocket calculator that shows a maximum of 999. If you try to add 1 to 999, it will not be able to display 1000 - the digits will simply "overflow" and the calculator will show something completely different, like 000.
In programming, this effect is called integer overflow.
It occurs when a number exceeds the maximum value that the chosen variable type can hold.
For example, if an int variable can hold numbers up to 2,147,483,647, then adding 1 will make its value… negative!
Why 2,147,483,647 is the "ceiling" for a 32-bit number
In a computer, numbers are stored in binary form (that is, as a sequence of zeros and ones).
"32-bit" means that 32 cells are allocated for storing a number, and each can be either 0 or 1.
But if the number is signed, then one of these cells is reserved for the sign:
- 0 in the first bit — the number is positive,
- 1 in the first bit — the number is negative.
So instead of 32 bits for the magnitude of the number, only 31 bits remain.
Maximum value When all 31 bits (except the sign) are filled with ones, we get the largest possible positive number:
1111111111111111111111111111111 (31 ones)
In decimal, this is exactly 2,147,483,647. In hexadecimal (hex) form, it is written as 0x7FFFFFFF:
- 7 is binary 0111 (that is, sign 0 + three ones),
- F is binary 1111 (four ones),
- and so on to the end.
Because of this, very strange bugs sometimes occur in programs, and there have even been serious accidents in history due to overflow. There are even memes about the integer overflow error, but that's not certain.
This post doesn't have any additions from the author yet.