Binary Number System: Representations | |
|
IEEE 32-Bit Floating Point Format - Homework solutions
HOMEWORK PROBLEM SOLUTIONS
1. Convert the decimal number 1234.53125 to an IEEE float number.
a. expressed in binary
1234.53125
First the integer portion:
1234 / 2 = 617 rem 0 <-- list the remainders, in reverse order: 0
= 308 rem 1 10
= 154 rem 0 010
= 77 rem 0 0010
= 38 rem 1 10010
= 19 rem 0 010010
= 9 rem 1 1010010
= 4 rem 1 11010010
= 2 rem 0 011010010
= 1 rem 0 0011010010
= 0 rem 1 10011010010
1234 = 10011010010
Next, the fractional portion:
0.53125 x 2 = 1.0625 <-- list the integer portion, beginning here: 0.1
0.0625 x 2 = 0.125 0.10
0.125 x 2 = 0.25 0.100
0.25 x 2 = 0.5 0.1000
0.5 x 2 = 1.0 0.10001
0.0 Stop, when the fractional result equals 0
0.53125 = 0.10001
Thus,
1234.53125 = 10011010010.10001
Normalizing: 1.001101001010001 x 210
s = 0, for positive number, 1 for negative.
e = 10; encode e + 127 = 137 = 10001001
f = 001101001010001
pad f to the right to make 23 bits: 00110100010100010000000
Assemble:
s e + 127 f
0 | 10001001 | 00110100101000100000000
==> 01000100100110100101000100000000
b. expressed in hexadecimal
0100 0100 1001 1010 0101 0001 0000 0000
= 449A5100
2. What is the decimal equivalent of the IEEE float number 447A3400 (expressed in hexadecimal)?
447A3400
0100 0100 0111 1010 0011 0100 0000 0000
divide into s, e+127 and f:
0 | 10001000 | 11110100011010000000000
s = 0; positive number
e+127 = 10001000 = 136; therefore, e = 136-127 = 9, giving 1.1111010001101 x 29
= 1111101000.1101
= 1111101000 + 0.1101
= 1000 + fraction
(Note that the answer is the decimal number one thousand, not the binary number 1000)
fraction = 1/2 + 1/4 + 1/16 = 0.8125
Thus the answer is:
1000.8125
3. Express the ASCII string "Done" in hexadecimal.
A is 41; a is 61
"Done" = 446F6E65
4. Consider the hexadecimal value AABBCCDD
a. How many bits does this value require?
Each hex digit is 4 bits, thus 4 x 8 = 32 bits.
b. If this represents a string of ASCII characters, how many characters are in the string?
Each ASCII character is 8 bits, thus 32 / 8 = 4 characters.
c. If this represents a 32-bit IEEE Float value, is the value positive or negative?
A = 1010, so the first bit is a 1 which, in IEEE Float, means the value is negative.
d. If this represents a 32-bit IEEE Float value, written in the form:
±1.bbbbbb...bbb x 2e
what is the value of e?
Look at the first 12 bits: AAB = 101010101011.
The first bit is the sign bit; drop it off: 01010101011
The exponent only uses eight bits, so take the first eight: 01010101
The 8 bit e+127 value is 01010101 = 85 in decimal.
So e+127 = 85.
Thus, e = 85-127 = -42
e. How can we determine whether this represents a string, an IEEE float, or something else?
Only by the context of the problem. It's just bits until we decide what the bits will mean.
|
|