Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Faced with an integer overflow, the underlying computer system may do one of two things: (a) signal some sort of error condition, or (b) produce an integer result that is within the range of representable integers on that system. The latter semantics may be preferable in some situations in that it allows the computation to proceed, thus avoiding a denial-of-service attack. However, it raises the question of what integer result to return to the user.

Below is set out definitions of two algorithms that The saturation and modwrap algorithms, defined in the following subsections, produce integer results that are always within a defined range. This range , namely is between the integer values MIN and MAX (inclusive), where MIN and MAX are two representable integers with MIN < MAX. This method of producing integer results is called Verifiably-in-Range Integers. The two algorithms are Saturation and Modwrap, defined in the following two subsections.

Saturation Semantics

For saturation semantics, assume that the mathematical result of the computation is result. The value actually returned to the user is set out in the following table:

...

Modwrap Semantics

Wiki Markup
ModwrapIn modwrap semantics is where the(also called _modulo_ arithmetic), integer values "wrap round" (also called _modulo_ arithmetic).  That is, adding one to {{MAX}} produces {{MIN}}.  This is the defined behavior for unsigned integers in the C Standard \[[ISO/IEC 9899-1999|AA. C References#ISO/IEC 9899-1999]\] (see Section 6.2.5, "Types", paragraph 9) and, very often, isis frequently the behavior of signed integers as alsowell.  However, init manyis applications,more itsensible wouldin bemany more sensibleapplications to use saturation semantics ratherinstead thanof modwrap semantics.  For example, in the computation of a size (using unsigned integers), it is often better for the size to stay at the maximum value in the event of overflow, rather than suddenly becoming a very small value.

...