## You are here

Homefixed-point arithmetic

## Primary tabs

# fixed-point arithmetic

For computation or display in fixed-point arithmetic, each real number $x$ has a variable number $k>0$ of integer digits $d_{{k-1}},\ldots,d_{0}$ (in order left to right from the most to the least significant digit) in base $b$ but always $l$ fractional digits to the right of the point. Thus,

$x=\sum_{{i=-l}}^{{k-1}}d_{i}b^{i}.$ |

For example, for the usual mundane applications of money, $b=10$ and $l=2$.

Fixed-point arithmetic can adequately represent any rational number ${n\over m}$ provided that $m\leq b^{l}$ and $m$ has no prime factors $b$ doesn’t (counting repeated prime factors). Addition and subtraction in fixed-point arithmetic present no special problems for such numbers. When it comes to multiplication and division, we run into cases where the result cannot be adequately represented though the operands can.

In those cases it may be practical to perform the computations in floating point and display the results in fixed-point. In fact, this is what many business calculators do (such as cash registers); they compute in binary floating point and display in decimal fixed-point. Another option is to continue the calculations in fixed-point by settling for crude approximations. Depending on the application and the user, the loss of precision may be acceptable. There are two ways to handle the loss of precision: if $d_{{-l-1}}>{b\over 2}$, we could then assign $d_{{-l}}=d_{{-l}}+1$ (propagating the change as needed to the more significant digits); or we could simply ignore everything to the right of $d_{{-l}}$.

Older versions of FractInt for 80386 IBM-compatibles used fixed-point arithmetic. Most computers (and even game consoles) today have floating point units, reducing the need for fixed-point. Even so, newer implementations of the C programming language are expected to provide fixed-point data types and appropriately overload built-in functions to handle those data types (see ISO/IEC TR 18037:2004).

## Mathematics Subject Classification

11A63*no label found*

- Forums
- Planetary Bugs
- HS/Secondary
- University/Tertiary
- Graduate/Advanced
- Industry/Practice
- Research Topics
- LaTeX help
- Math Comptetitions
- Math History
- Math Humor
- PlanetMath Comments
- PlanetMath System Updates and News
- PlanetMath help
- PlanetMath.ORG
- Strategic Communications Development
- The Math Pub
- Testing messages (ignore)

- Other useful stuff
- Corrections