Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Floating-point: "The leading 1 is 'implicit' in the significand." -- ...huh?

Tags:

ieee-754

I'm learning about the representation of floating-point IEEE 754 numbers, and my textbook says:

To pack even more bits into the significand, IEEE 754 makes the leading 1-bit of normalized binary numbers implicit. Hence, the number is actually 24 bits long in single precision (implied 1 and 23-bit fraction), and 53 bits long in double precision (1 + 52).

I don't get what "implicit" means here... what's the difference between an explicit bit and an implicit bit? Don't all numbers have the bit, regardless of their sign?

like image 664
user541686 Avatar asked Feb 08 '11 06:02

user541686


People also ask

What is the significand in floating-point?

In floating-point arithmetic, the significand is a component of a finite floating-point number containing its significant digits.

What is the significand in binary?

When a number expressed with significand and exponent is normalized, there are no leading zeros in the significand. In binary, this means that the leading digit of the significand must be one; in turn, there's no need to store this value explicitly.

Does the mantissa always start with 1?

In general, the first digit must be in the range [1,(b−1)], where b is the base. But in binary b=2, so the range is [1,1]. That is: the first digit of the mantissa is always "1".

Is the mantissa the significand?

The significand (also mantissa or coefficient, sometimes also argument, or ambiguously fraction or characteristic) is part of a number in scientific notation or in floating-point representation, consisting of its significant digits.


1 Answers

Yes, all normalised numbers (other than the zeroes) have that bit set to one (a), so they make it implicit to prevent wasting space storing it.

In other words, they save that bit totally, and reuse it so that it can be used to increase the precision of your numbers.

Keep in mind that this is the first bit of the fraction, not the first bit of the binary pattern. The first bit of the binary pattern is the sign, followed by a few bits of exponent, followed by the fraction itself.

For example, a single precision number is (sign, exponent, fraction):

<1>  <--8--->  <---------23---------->  <- bit widths
 s   eeeeeeee  fffffffffffffffffffffff

If you look at the way the number is calculated, it's:

(-1)sign x 1.fraction x 2exponent-bias

So the fractional part used for calculating that value is 1.fffff...fff (in binary).


(a) There is actually a class of numbers (the denormalised ones and the zeroes) for which that property does not hold true. These numbers all have a biased exponent of zero but the vast majority of numbers follow the rule.

like image 56
paxdiablo Avatar answered Oct 22 '22 02:10

paxdiablo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!