Floating Point Numbers

advertisement
Floating Point Numbers

In the decimal system, a decimal point
(radix point) separates the whole numbers
from the fractional part

Examples:
37.25 ( whole=37, fraction = 25)
123.567
10.12345678
Floating Point Numbers
For example, 37.25 can be analyzed as:
101
100
10-1
10-2
Tens Units
Tenths Hundredths
3
7
2
5
37.25 = 3 x 10 + 7 x 1 + 2 x 1/10 + 5 x 1/100
Binary Equivalent
The binary equivalent of a floating point
number can be computed by computing
the binary representation for each part
separately.


whole part: subtraction or division
Fractional part: subtraction or multiplication
Binary Equivalent
In the binary representation of a floating
point number the column values will be as
follows:
… 26 25 24 23 22 21 20 . 2-1 2-2 2-3
2-4 …
… 64 32 16 8 4 2 1 . 1/2 1/4 1/8 1/16 …
… 64 32 16 8 4 2 1 . .5 .25 .125 .0625 …
Finding Binary Equivalent of fraction part
Converting .25 using Multiplication method.
Step 1 : multiply fraction by 2 until fraction becomes 0
.25
x2
0.5
x2
1.0
Step 2 Collect the whole parts and place them after the radix point
64 32 16 8 4 2 1 . .5 .25 .125 .0625
. 0
1
Finding Binary Equivalent of fraction part
Converting .25 using subtraction method.
Step 1: write positional powers of two and column
values for the fractional part
. 2-1 2-2 2-3 2-4 2 -5
. ½ ¼ 1/8 1/16 1/32
. .5 .25 .125 .0625 0.03125
Finding Binary Equivalent of fraction part
Converting .25 using subtraction method.
Step 2: start subtracting the column values from left to right,
place a 0 if the value cannot be subtracted or 1 if it can
until the fraction becomes .0 .
.25
2 1 . .5 .25 .125 .0625
- .25
. 0 1
.0
Binary Equivalent of FP number
Given 37.25, convert 37 and .25 using subtraction method.
64 32 16 8 4 2 1 . .5 .25 .125 .0625
26 25 24 23 22 21 20 . 2-1 2-2 2-3 2-4
1 0 0 1 0 1 . 0 1
37
.25
- 32
- .25
5
.0
-4
1
-1
0
37.2510 = 100101.012
So what is the Problem?
Given the following binary representation:
37.2510 = 100101.012
7.62510 = 111.1012
0.312510 = 0.01012
How we can represent the whole and
fraction part of the binary rep. in 4 bytes?
Solution is Normalization
Every binary number, except the one
corresponding to the number zero, can be
normalized by choosing the exponent so that the
radix point falls to the right of the leftmost 1 bit.
37.2510 = 100101.012 = 1.0010101 x 25
7.62510 = 111.1012 = 1.11101 x 22
0.312510 = 0.01012 = 1.01 x 2-2
So what Happened ?
After normalizing, the numbers now have
different mantissas and exponents.
37.2510 = 100101.012 = 1.0010101 x 25
7.62510 = 111.1012 = 1.11101 x 22
0.312510 = 0.01012 = 1.01 x 2-2
IEEE Floating Point Representation
Floating point numbers can be represented
by binary codes by dividing them into three
parts:
the sign, the exponent, and the mantissa.

1
2
9
10
32
IEEE Floating Point Representation

The first, or leftmost, field of our floating point
representation will be the sign bit:
 0 for a positive number,
 1 for a negative number.
IEEE Floating Point Representation


The second field of the floating point number will be the
exponent.
Since we must be able to represent both positive and
negative exponents, we will use a convention which uses
a value known as a bias of 127 to determine the
representation of the exponent.



An exponent of 5 is therefore stored as 127 + 5 or 132;
an exponent of -5 is stored as 127 + (-5) OR 122.
The biased exponent, the value actually stored, will
range from 0 through 255. This is the range of values that
can be represented by 8-bit, unsigned binary numbers.
IEEE Floating Point Representation

The mantissa is the set of 0’s and 1’s to the
left of the radix point of the normalized
(when the digit to the left of the radix point
is 1) binary number.


ex:1.00101 X 23
The mantissa is stored in a 23 bit field,
Converting decimal floating point values to stored IEEE
standard values.
Example: Find the IEEE FP representation of
40.15625.
Step 1.
Compute the binary equivalent of the whole part
and the fractional part. ( convert 40 and .15625.
to their binary equivalents)
Converting decimal floating point values to stored IEEE
standard values.
40
- 32
8
- 8
0
Result:
101000
.15625
- .12500
.03125
- .03125
.0
So: 40.1562510 = 101000.001012
Result:
.00101
Converting decimal floating point values to stored IEEE
standard values.
Step 2. Normalize the number by moving
the decimal point to the right of the
leftmost one.
101000.00101 = 1.0100000101 x 25
Converting decimal floating point values to stored IEEE
standard values.
Step 3. Convert the exponent to a biased
exponent
127 + 5 = 132
==>
13210 = 100001002
Converting decimal floating point values to stored IEEE
standard values.
Step 4. Store the results from above
Sign
0
Exponent (from step 3)
10000100
Mantissa ( from step 2)
01000001010 .. 0
Covert 40.15625 to IEEE 32-bit format
40.15625
Step 1
Find binary of whole number
40-32-8
Binary value of 40
32 16 8 4 2 1
1 0 1 0 0 0
Step 1b
Find binary of fraction number
.15625 -.1250 - .03125
Binary value of .15625
.5 .25 .125 .0625 .03125
0 0
1
0
1
Step 2a
Move decimal (Radix point) to the
right of the left most 1 to come up with
the exponent
.
101000.00101
Step 2b
Normalize by multipling the number by 2
and the exponent from step 3
Equals
101000.00101 x 25 = 1.0100000101
Step 3a
convert the exponent to a biased exponent
by adding the bias of 127 to the exponent
127 + 5 = 13210
Step 3b
Convert the biased exponent to its binary
value
Binary value of 132
132-128-4
64 32 16 8 4 2 1
1 0 0 0 1 0 0
Step 4a
Piece together values.
Step 4c. Left pad exponent and right
pad mantissa to determine the binary
equivalent of IEEE
Sign Exponent
0
10000100
0 010000100
Mantissa
0100000101
01000001010…0
Sign Exponent
0 010000100
Mantissa
01000001010…0
Step 4b
Move to mantissa
without the 1.
Converting decimal floating point values to stored IEEE
standard values.
Ex : Find the IEEE FP representation of –24.75
Step 1. Compute the binary equivalent of the whole
part and the fractional part.
24
.75
- 16 Result:
- .50 Result:
8
11000
.25
.11
- 8
- .25
0
.0
So: -24.7510 = -11000.112
Converting decimal floating point values to stored IEEE
standard values.
Step 2.
Normalize the number by moving the
decimal point to the right of the leftmost
one.
-11000.11 = -1.100011 x 24
Converting decimal floating point values to stored IEEE
standard values.
Step 3. Convert the exponent to a biased exponent
127 + 4 = 131
==> 13110 = 100000112
Step 4. Store the results from above
Sign
Exponent
mantissa
1
10000011
1000110..0
Converting from IEEE format to the decimal floating
point values.

Do the steps in reverse order

In reversing the normalization step move
the radix point the number of digits equal
to the exponent. if exponent is +ve move to
the right, if –ve move to the left.
Converting from IEEE format to the decimal floating
point values.
Ex: Convert the following 32 bit binary numbers to
their decimal floating point equivalents.
a.
Sign
Exponent
Mantissa
1
01111101
010..0
Converting from IEEE format to the decimal floating
point values.
Step 1 Extract exponent (unbias exponent)
biased exponent = 01111101 = 125
exponent: 125 - 127=
-2
Converting from IEEE format to the decimal floating
point values.
Step 2 Write Normalized number
Exponent
1 . ____________ x 2
mantissa
-1. 01 x 2 –2
----
Converting from IEEE format to the decimal floating
point values.
Step 3: Write the binary number (denormalize value
from step2)
-0.01012
Step 4: Convert binary number to FP equivalent (
add column values)
-0.01012 = - ( 0.25 + 0.0625) = -0.3125
Converting from IEEE format to the decimal floating
point values.
Ex: Convert the following 32 bit binary
numbers to their decimal floating point
equivalents.
Sign
0
Exponent
10000011
Mantissa
1101010..0
Converting from IEEE format to the decimal floating
point values.
Step 1 Extract exponent (unbias exponent)
biased exponent = 10000011 = 131
exponent: 131 - 127= 4
Converting from IEEE format to the decimal floating
point values.
Step 2 Write Normalized number
Exponent
1 . ____________ x 2
mantissa
1. 110101 x 2 4
----
Converting from IEEE format to the decimal floating
point values.
Step 3 Write the binary number (denormailze value
from step 2)
11101.012
Step 4 Convert binary number to FP equivalent ( add
column values)
11101.012 = 16 + 8 + 4 + 1 + 0.25 = 29.2510
Proof your work
Convert
0 10000100 01000001010…0 back to IEEE
Sign Exponent
0 010000100
Step 1a
Determine the decimal of the binary
number
Step 1b
Unbias the number by Subtracting 127
from the decimal number to determine
the exponent
Mantissa
01000001010…0
128 32 16 8 4 2 1
1 0 0 0 1 0 0
128+4
Binary value = 132
Step 2
Denormalize by multipling the number by 2 and
the exponent from step 2.
Set up format 1 mantissa x 2 exponent
132 – 127 = 5
1.0100000101 x 25
.
Step 3a
Move decimal (Radix point) to the right of
the left most 1 to come up with the exponent
Equals
101000 . 001012
Step 3b
Convert binary number to FP equvalent
Step 4a
Find whole number of exponent
32 16 8 4 2 1
1 0 1 0 0 0
.5 .25 .125 .0625 .03125
0 0
1
0
1
32+8 = 40
.1250 + .03125 = .15625
Step 4c
Add together values. Make sure to include
the sign if it is a negative value
40.15625
Step 4b
Find fractional numberof
the mantissa
Download