In computing, a normal number is a non-zero number in a floating-point representation which is within the balanced range supported by a given floating-point format: it is a floating point number that can be represented without leading zeros in its significand.

The magnitude of the smallest normal number in a format is given by:

<math display="block">b^{E_{\text{min}</math>

where b is the base (radix) of the format (like common values 2 or 10, for binary and decimal number systems), and <math display="inline">E_{\text{min</math> depends on the size and layout of the format.

Similarly, the magnitude of the largest normal number in a format is given by

<math display="block">b^{E_{\text{max}\cdot\left(b - b^{1-p}\right)</math>

where p is the precision of the format in digits and <math display="inline">E_{\text{min</math> is related to <math display="inline">E_{\text{max</math> as:

<math display="block">E_{\text{min\, \overset{\Delta}{\equiv}\, 1 - E_{\text{max = \left(-E_{\text{max\right) + 1</math>

In the IEEE 754 binary and decimal formats, b, p, <math display="inline">E_{\text{min</math>, and <math display="inline">E_{\text{max</math> have the following values:

{| class="wikitable" style="text-align: right;" |

|+Smallest and Largest Normal Numbers for common numerical Formats

!Format!!<math>b</math>!!<math>p</math>!!<math>E_{\text{min</math>!!<math>E_{\text{max</math>

!Smallest Normal Number

!Largest Normal Number

|-

|binary16||2||11||−14||15

|<math>2^{-14} \equiv 0.00006103515625</math>

|<math>2^{15}\cdot\left(2 - 2^{1-11}\right) \equiv 65504</math>

|-

|binary32||2||24||−126||127

|<math>2^{-126} \equiv \frac{1}{2^{126</math>

|<math>2^{127}\cdot\left(2 - 2^{1-24}\right)</math>

|-

|binary64||2||53||−1022||1023

|<math>2^{-1022} \equiv \frac{1}{2^{1022</math>

|<math>2^{1023}\cdot\left(2 - 2^{1-53}\right)</math>

|-

|binary128||2||113||−16382||16383

|<math>2^{-16382} \equiv \frac{1}{2^{16382</math>

|<math>2^{16383}\cdot\left(2 - 2^{1-113}\right)</math>

|-

|decimal32||10||7||−95||96

|<math>10^{-95} \equiv \frac{1}{10^{95

</math>

|<math>10^{96}\cdot\left(10 - 10^{1-7}\right) \equiv 9.999999 \cdot 10^{96}</math>

|-

|decimal64||10||16||−383||384

|<math>10^{-383} \equiv \frac{1}{10^{383

</math>

|<math>10^{384}\cdot\left(10 - 10^{1-16}\right)</math>

|-

|decimal128||10||34||−6143||6144

|<math>10^{-6143} \equiv \frac{1}{10^{6143

</math>

|<math>10^{6144}\cdot\left(10 - 10^{1-34}\right)</math>

|}

For example, in the smallest decimal format in the table (decimal32), the range of positive normal numbers is 10<sup>&minus;95</sup> through 9.999999 × 10<sup>96</sup>.

Non-zero numbers smaller in magnitude than the smallest normal number are called subnormal numbers (or denormal numbers).

Zero is considered neither normal nor subnormal.

See also

  • Normalized number
  • Half-precision floating-point format
  • Single-precision floating-point format
  • Double-precision floating-point format

References