Arithmetic overflow

Arithmetic overflow

The term arithmetic overflow or simply overflow has the following meanings.

  1. In a computer, the condition that occurs when a calculation produces a result that is greater in magnitude than that which a given register or storage location can store or represent.
  2. In a computer, the amount by which a calculated value is greater than that which a given register or storage location can store or represent. Note that the overflow may be placed at another location.

Most computers distinguish between two kinds of overflow conditions. A carry occurs when the result of an addition or subtraction, considering the operands and result as unsigned numbers, does not fit in the result. Therefore, it is useful to check the carry flag after adding or subtracting numbers that are interpreted as unsigned values. An overflow proper occurs when the result does not have the sign that one would predict from the signs of the operands (e.g. a negative result when adding two positive numbers). Therefore, it is useful to check the overflow flag after adding or subtracting numbers that are represented in two's complement form (i.e. they are considered signed numbers).

There are several methods of handling overflow:

  1. Design: by selecting correct data types, both length and signed/unsigned.
  2. Avoidance: by carefully ordering operations and checking operands in advance, it is possible to ensure that the result will never be larger than can be stored.
  3. Handling: If it is anticipated that overflow may occur and when it happens detected and other processing done. Example: it is possible to add two numbers each two bytes wide using just a byte addition in steps: first add the low bytes then add the high bytes, but if it is necessary to carry out of the low bytes this is arithmetic overflow of the byte addition and it necessary to detect and increment the sum of the high bytes. CPUs generally have a way of detecting this to support addition of numbers larger than their register size, typically using a status bit.
  4. Propagation: if a value is too large to be stored it can be assigned a special value indicating that overflow has occurred and then have all successive operation return this flag value. This is useful so that the problem can be checked for once at the end of a long calculation rather than after each step. This is often supported in Floating Point Hardware called FPUs.
  5. Ignoring: This is the most common approach, but it gives incorrect results and can compromise a program's security.

Division by zero is not a form of arithmetic overflow. Mathematically, division by zero within reals is explicitly undefined if the problem is zero divided by zero, and is defined as either positive or negative infinity depending on the signs of the numbers involved, or is undefined.

An unhandled arithmetic overflow was the primary cause of the crash of Ariane 5 Flight 501.

See also

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Overflow flag — In computer processors, the overflow flag (sometimes called V flag) is usually a single bit in a system status register used to indicate when an arithmetic overflow has occurred in an operation, indicating that the signed two s complement result… …   Wikipedia

  • Arithmetic shift — In computer programming, an arithmetic shift is a shift operator, sometimes known as a signed shift (though it is not restricted to signed operands). For binary numbers it is a bitwise operation that shifts all of the bits of its operand; every… …   Wikipedia

  • Overflow — Contents 1 Computing and telecommunications 2 Water Overflow may refer to: Computing and telecommunications Buffer …   Wikipedia

  • Arithmetic logic unit — schematic symbol Cascadable 8 …   Wikipedia

  • Arithmetic underflow — (or floating point underflow , floating underflow , underflow ) is a condition that can occur when the result of a floating point operation would be smaller in magnitude (closer to zero, either positive or negative) than the smallest quantity… …   Wikipedia

  • Integer overflow — In computer programming, an integer overflow occurs when an arithmetic operation attempts to create a numeric value that is larger than can be represented within the available storage space. For instance, adding 1 to the largest value that can be …   Wikipedia

  • Wrapping (overflow) — In computing, wrapping is when a variable that exceeds its maximum value returns to its minimum value and vice versa. Most high level programming languages avoid wrapping by giving an arithmetic overflow error if this occurs.Camera wrapping is a… …   Wikipedia

  • Arbitrary-precision arithmetic — In computer science, arbitrary precision arithmetic indicates that calculations are performed on numbers whose digits of precision are limited only by the available memory of the host system. This contrasts with the faster fixed precision… …   Wikipedia

  • Saturation arithmetic — is a version of arithmetic in which all operations such as addition and multiplication are limited to a fixed range between a minimum and maximum value. If the result of an operation is greater than the maximum it is set ( clamped ) to the… …   Wikipedia

  • Fixed-point arithmetic — In computing, a fixed point number representation is a real data type for a number that has a fixed number of digits after (and sometimes also before) the radix point ( e.g. , after the decimal point . in English decimal notation). Fixed point… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”