Integer overflow
Integer overflow occurs in computers, when the number which is stored becomes larger than the capacity of the memory it is stored in. The most likely result is that the number will reset to 0 and start over.
For example, start with the number 14, using 4-bits integers. Add 1 a few times, this will result in an overflow, which causes it to reset the number to 0.
Binary number | Decimal number |
---|---|
1110 | 14 |
1111 | 15 |
0000 | 0 |
0001 | 1 |
Another result is the number will reset to the most negative number, if the number has a sign. This is because negative numbers are represented by values after the maximum positive value.
For example, with signed 4-bit integers. Adding 1 will cause this type of overflow:[1]
Binary number | Decimal number |
---|---|
0110 | 6 |
0111 | 7 |
1000 | -8 |
1001 | -7 |
Integer Overflow Media
Integer overflow can be demonstrated through an odometer overflowing, a mechanical version of the phenomenon. All digits are set to the maximum 9 and the next increment of the white digit causes a cascade of carry-over additions setting all digits to 0, but there is no higher digit (1,000,000s digit) to change to a 1, so the counter resets to zero.
An integer signedness bug in the stack setup code emitted by the Pascal compiler prevented IBM–Microsoft Macro Assembler (MASM) version 1.00, a DOS program from 1981, and many other programs compiled with the same compiler, to run under some configurations with more than 512 KB of memory.