Carlos
Carlos

Reputation: 21

Converting from binary to IEEE floating-point

I need to convert the binary number 0000 0110 1101 1001 1111 1110 1101 0011 to IEEE floating-point. The answer is 1.10110011111111011010011 x 2^−114, but how is the exponent derived?

Upvotes: 2

Views: 13624

Answers (3)

hamed
hamed

Reputation: 21

for example 33.1 number

first:

convert decimal to binary

33.1 = 100001.0001100110011001100 . . .

second :

1.000010001100110011001100...*2^5

than :

Sing = positive = 0

Exponent = 5 + 127 = 132 = (1000100)

Mantissa = 000010001100110011001100...

S E M =0 1000100 000010001100110011001100 = (33.1)Decimal = (42046666)Hex

Upvotes: 2

Stephen Canon
Stephen Canon

Reputation: 106117

Let's break the representation of your number up into the component parts of an IEEE-754 floating-point value:

   0 00001101 10110011111111011010011
sign exponent significand

The exponent field is b00001101, which is 13. How do we get from there to -114?

The exponent of an IEEE-754 number is stored in a biased representation, which means that a fixed value is added to the true exponent to get the value stored in the encoding. For single (32-bit) precision, the bias is 127. To get the exponent from the encoding, we need to subtract off this bias:

13 - 127 = -114

the units bit of the significand is not stored (it is implicitly 1 unless the exponent field is zero), so we insert that bit into the significand, and get the value you listed:

b1.10110011111111011010011 * 2^-114

Upvotes: 1

xanatos
xanatos

Reputation: 111810

http://en.wikipedia.org/wiki/Single_precision_floating-point_format

Take the first 9 digits

0 00001101

The first one is the sign (0 == positive)

The next 8 are the exponent, converted to decimal == 13. The sign in IEEE 32 binary float are offsetted by 127, so 13 - 127 = -114.

(and the missing 1 for the fraction part, it's implicit)

Done :-)

Upvotes: 2

Related Questions