以IEEE754短浮点数格式表示十进制数:-3.125 要求写出过程,并最终用十六进制缩写形式表示
问题描述:
以IEEE754短浮点数格式表示十进制数:-3.125 要求写出过程,并最终用十六进制缩写形式表示
答
单精度符点数的表示格式为:从高到低依次为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