0
$\begingroup$

Which is correct? Are they both correct?

Definition 1 A floating point number is said to be normalized if the leading digit of its mantissa is nonzero. for example $(0.10101)_{2}\times 2^{3}$ is normalized, but $(0.010101)_{2}\times 2^{4}$ is not. (َAccording to James W. Demmel; Applied Numerical Linear Algebra; page:9. and many others about numerical analysis/numerical methods)

Definition 2 In base $b$ a normalized number will have the form $$\pm d_{0}.d_{1}d_{2}d_{3}...\times b^{n}$$ where $d_{0}\neq 0$, and the digits $d_{0},d_{1},d_{2},d_{3},...$ are integers between $0$ and $b-1$. (According to Wikipedia and also IEEE Standard for Floating-Point Arithmetic)

We see that in the first definition $d_{0}=0$ but in second $d_{0} \neq 0$?

$\endgroup$
  • $\begingroup$ This is not really mathematics. The difference between the two definitions is just a matter of numbering: if you relabel the second one as $d_1 . d_2 d_3 d_4 \ldots$ then there will be no difference at all. $\endgroup$ – Zhen Lin Mar 24 '14 at 19:13
1
$\begingroup$

As a professional programmer I can confirm definition #2. This way floating point numbers are normalized by the FPU and I believe this is common to all computer systems.

In the mean time I don't know what definition is used in mathematic world, it can be different.

$\endgroup$
  • $\begingroup$ I can't say I've ever seen floating-point numbers outside of programming. Floating-point is just a way to represent numbers on real-world hardware, and since mathematicians aren't restricted to real-world hardware, we rarely worry about representing numbers in such ways. $\endgroup$ – Alex Becker Mar 24 '14 at 19:14
  • 1
    $\begingroup$ @Alex, I presume there may be a convention of writing an $x \in \mathbb{R}$ in decimal form... (like $0.123 \cdot 10^1$ or $1.23 \cdot 10^0$ or $12.3 \cdot 10^{-1}$) but probably there is no. $\endgroup$ – werediver Mar 24 '14 at 19:26
1
$\begingroup$

Your first definition is the mathematical definition of a normalized number. It predates any IEEE standard and even the IEEE itself.

The second definition was created for practical reasons. A normalized number always begin with $0.1$, so you don't need to store the zero or one on the computer's memory. You just store the digits the come after them. And the point was shifted to the right to make the arithmetics easier when using electronic circuits, particularly for multiplication and division.

In other words, definition #1 is what mathematicians have been using for a really long time, but then engineers realized that definition #2 would make electronic circuits simpler so they adopted it.

$\endgroup$
0
$\begingroup$

Your first definition is wrong. A binary floating-point number is normalized if it is in the form $1.d_1d_2d_3\ldots\times 2^n$.

$\endgroup$
  • $\begingroup$ Thank you. But why in the most numerical analysis/methods books I have read, the first definition mentioned? $\endgroup$ – Dante Mar 24 '14 at 19:32
  • $\begingroup$ @user-96402 I have no idea. But the IEEE Floating Point Standard is the official definition, so any definition which disagrees with it is, by definition, wrong. $\endgroup$ – Alex Becker Mar 24 '14 at 19:33
0
$\begingroup$

A common use case for your first example is that we are considering numbers less than $2^n$, and the analysis of whatever problem we are studying is simplified if the numbers are as close to the bound as possible. If we're allowed to freely multiply by powers of $2$ to 'normalize' numbers to where they're simplest to analyze, then the normalizations should always be in the interval $[2^{n-1}, 2^n)$.

That is, they should be of the form $2^n \cdot [1/2, 1)$, and thus have the binary representation you describe.

$\endgroup$

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.