以IEEE754短浮点数格式表示十进制数:-3.125 要求写出过程,并最终用十六进制缩写形式表示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以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<< hex << a <<endl;

结果正确。
参考技术A 3F880000化为二进制
0011 1111 1000 1000 0000 0000 0000 0000
按IEEE754标准,32位浮点数应表示为
0 01111111 00010000000000000000000
指数e = 0111111 - 127 = 0
尾数1.0001 = 1 + 2^(-4) = 1.0625

x = (-1)^0 * 1.0625 * 2^0 = 1.0625

ieee754单精度浮点数 表示方法

参考技术A 1、浮点数在C/C++中对应float和double类型,有必要知道浮点数在计算机中实际存储的内容。

2、IEEE754标准中规定float单精度浮点数在机器中表示用1位表示数字的符号,用8位来表示指数,用23位来表示尾数,即小数部分。对于double双精度浮点数,用1位表示符号,用11位表示指数,52位表示尾数,其中指数域称为阶码。

3、注意,IEE754规定浮点数阶码E采用”指数e的移码-1”来表示,请记住这一点。为什么指数移码要减去1,这是IEEE754对阶码的特殊要求,以满足特殊情况,比如对正无穷的表示。

以上是关于以IEEE754短浮点数格式表示十进制数:-3.125 要求写出过程,并最终用十六进制缩写形式表示的主要内容,如果未能解决你的问题,请参考以下文章

IEEE754表示浮点数

关于IEEE754标准浮点数阶码的移码

考前自学系列·计算机组成原理·IEEE 754 单精度浮点数和真值之间的转化

ieee754单精度浮点数 表示方法

浮点数 (IEEE-754)

由IEEE 754深入理解浮点数