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. |