以IEEE754短浮点数格式表示十进制数:-3.125 要求写出过程,并最终用十六进制缩写形式表示
答案:2 悬赏:10 手机版
解决时间 2021-02-25 10:53
- 提问者网友:斑駁影
- 2021-02-24 10:00
以IEEE754短浮点数格式表示十进制数:-3.125 要求写出过程,并最终用十六进制缩写形式表示
最佳答案
- 五星知识达人网友:天凉才是好个秋
- 2021-02-24 10:25
单精度符点数的表示格式为:从高到低依次为1位符号位,8位指数位,23位小数位。
首先把浮点数按二进制形式表示(以下过程不要想得太复杂):
-3.125 = -11.001
首先把小数点往左移,直到小数点的左边只有一个“1”为止。该例中就是左移一位,变成-1.1001
因为小数位是23位,所以现在把小数点的右边“1001”往后被0,直到补够23位为止,也就是要补19个0,变成:10010000000000000000000
现在计算指数位。刚才说是小数点左移,直到左边只有一个“1”为止。但是如果浮点数本身是小于1的,比如0.125用二进制表示是0.001,此时应该右移3位才对。这种情况下把“右移3位”看成是“左移-3位”,指数位的计算方法就是用127加上左移的位数。该例中因为左移了一位,所以指数位是128.注意,原先小数点左边的还剩下一个“1”是没用的,指数位就是127加上左移位数。用二进制表示,指数位是1000000.
因为-3.125是个负数,所以符号位为1.因此,-3.125的二进制形式是:
1 10000000 10010000000000000000000
写成十六进制是:c0480000
在程序里验证下:
float f = -3.125f;
int a = (int&)f;
cout<< hex << a <
结果正确。
首先把浮点数按二进制形式表示(以下过程不要想得太复杂):
-3.125 = -11.001
首先把小数点往左移,直到小数点的左边只有一个“1”为止。该例中就是左移一位,变成-1.1001
因为小数位是23位,所以现在把小数点的右边“1001”往后被0,直到补够23位为止,也就是要补19个0,变成:10010000000000000000000
现在计算指数位。刚才说是小数点左移,直到左边只有一个“1”为止。但是如果浮点数本身是小于1的,比如0.125用二进制表示是0.001,此时应该右移3位才对。这种情况下把“右移3位”看成是“左移-3位”,指数位的计算方法就是用127加上左移的位数。该例中因为左移了一位,所以指数位是128.注意,原先小数点左边的还剩下一个“1”是没用的,指数位就是127加上左移位数。用二进制表示,指数位是1000000.
因为-3.125是个负数,所以符号位为1.因此,-3.125的二进制形式是:
1 10000000 10010000000000000000000
写成十六进制是:c0480000
在程序里验证下:
float f = -3.125f;
int a = (int&)f;
cout<< hex << a <
结果正确。
全部回答
- 1楼网友:長槍戰八方
- 2021-02-24 11:16
3F880000化为二进制
0011
0011
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯