我是第一次学习从十进制数到IEEE 32浮动标准的转换,目前我很困惑,因为我看到一些讲座幻灯片和大学的例子,一方面做,然后是另一方做。特别是获得小数的1和0。所以,如果你有一个像1234.567这样的数字
你将1234转换为二进制没有问题,但后来我很困惑如何转换小数。最初我看到你去了
.567 * 2 = 1.134 = 1
.134 * 2 = .268 = 0
.268 *2 = .536 = 0
请注意,这是小数位数的数量。但后来我看到其他的例子继续用小数到一些永不停止的点(在哪里停止?)。如果我按照上面的方式进行操作,我会得到以下信息:
10011010010 for 1234
10011010010.100
1.0011010010100 x 2 ^ (10).
127 +10 = 137. 137 in binary is 10001001.
So 32 bits of binary is
0 for sign| 10001001 for exp| 0011010010100 0000000000
一共32位。这是对的吗?
答案 0 :(得分:0)
第二种方法绝对好。但是,在计算二进制为0.567时,如果你没有达到终点(即 0.0 )那么,至少要达到23位(尾数)。< / p>
您的小数1234.567
binary of 1234 = 100 1101 0010
binary of 0.567 = .1001 0001 0010 0110 1110 100 (up to 23 bit)
binary of 1234.567 = 100 1101 0010.1001 0001 0010 0110 1110 100
= 1.00 1101 0010 1001 0001 0010 0110 1110 100 * 2^10 Hence, Exponent = 10 Normalized Mantissa (with adjusted length 23 bit) = 001 1010 0101 0010 0010 0100
Sign bit = 0 Hence 32 bit floated conversion :
0 - 1000 1001 - 001 1010 0101 0010 0010 0100