您的位置:首页 > 其它

将整数的二进制表示转浮点数的二进制表示

2010-01-27 18:09 549 查看
将整数的二进制表示转浮点数的二进制表示
已知:整数3490593(16进制表示为0x354321)。
求:其对应的浮点数3490593.0的二进制表示。

解法如下:
先求出整数3490593的二进制表示:

H: 3 5 4 3 2 1
B: 0011 0101 0100 0011 0010 0001
│←──────21─────→│

即:
1.1010101000011001000012×221

可见,从左算起第一个1后有21位,我们将这21为作为浮点数的小数表示,但IEEE规定的单精度浮点数float由符号位1位,指数域位k=8位,小数域位n=23位构成,因此对上面得到的21位小数位我们还需要补上2个0,得到浮点数的小数域表示为:
[1 0101 0100 0011 0010 0001 00]

float类型的偏置量Bias=2k-1-1=28-1-1=127,但还要补上刚才因为右移作为小数部分的21位,因此偏置量为127+12=148,就是IEEE浮点数表示标准:
V = (-1)s×M×2E
E = e-Bias
中的e,此前计算Bias=127,刚好验证了E=148-127=21。

将148转为二进制表示为[10010100],加上符号位0,最后得到二进制浮点数表示[1001010010101010000110010000100],其16进制表示为:

H: 4 A 5 5 0 C 8 4
B: 0100 1010 0101 0101 0000 1100 1000 0100
│←────21─────→│
1│←─8─→| ←─────23─────→│

这就是浮点数3490593.0(0x4A550C84)的二进制表示。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: