IEEE754单精度浮点数与十进制相互转化

什么是IEEE754单精度浮点数

IEEE 754单精度浮点数格式使用32位二进制表示,其中1位用于符号位,8位用于指数,23位用于尾数。

以下是IEEE 754单精度浮点数的详细格式:

SExpFrac
18 bits23 bits

其中,S表示符号位,Exp表示指数,Frac表示尾数。

  1. 符号位(S):用于表示浮点数的正负性。当S为0时,表示为正数;当S为1时,表示为负数。

  2. 指数位(Exp):用于表示浮点数的大小范围。在IEEE 754标准中,指数采用“移码表示”(Excess-K表示),即实际指数值为指数值减去一个固定偏移量K。对于单精度浮点数,指数偏移量为2的7次方-1=127。因此,指数位的取值范围为-126~127。

  3. 尾数(Frac):用于表示浮点数的精度。在IEEE 754标准中,尾数采用隐式“1”表示法,即在尾数的最高位上总是隐含一个“1”,因此尾数的范围为1到2(不包括2),可以表示的最小精度为2的-23次方。
    通过这些二进制位的组合,单精度浮点数可以表示的实数范围为约±3.4×10^38,
    可以表示的最小正数为约2.2×10^-23。

IEEE754单精度浮点数转十进制格式

例题:
若浮点数 x 的 IEEE754 标准存储格式为(41360000)16,求其浮点数的十进制数值。

  1. 将16进制的格式转化为二进制的格式的数字
(41360000)16
(0100 0001 0011 0110 0000 0000 0000 0000)2
  1. 首位是S(f符号位),次八位-127是E(阶数),剩余23位是M(尾数)
S=0
E=(100 0001 0)2-(127)10
 =130-127
 =3
//计算得出阶数E=3
  1. x=(–1)S×(1.M)×2E
S=0
E=3
M=011 0110 0000 0000 0000 0000
//计算
x=(1)^(1.M)×2^E
 =1×1.011011×8
 =1011.011
//结果转化为十进制
 (11.375)10

十进制转IEEE754单精度浮点数格式

例题:
将263.25转化为单精度浮点数格式。

  1. 求S:正数S=0,负数S=1;
  2. 求E:十进制数转化为二进制数,然后将其变成1.M格式,需要将小数点移动N位,E=127+N
//将其转化为二进制的格式
(263.25)10=(100000111.01)2
//将小数点移动,使得成为1.M的格式
1.0000011101(小数点向左移动了八位)
//得到E的值
E=127+8=135
//二进制形式
10000111
  1. 将1.M的格式的小数位作为M的值,如果不够23位,后面补零
M=0000011101
//所以最终答案是:S E M
0 1000 0111 0000 0111 0100 0000 0000 000
  • 7
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你的问题。 首先,IEEE754 单精度点数的格式为:1位符号位 + 8位指数位 + 23位尾数位。其中,符号位表示正负性,指数位表示数值的大小,尾数位表示数值的精度。具体的转换方式可以参考以下步骤: 1. 将十六进制数转换成二进制数。 2. 将二进制数按照符号位、指数位和尾数位进行划分。 3. 根据指数位的值,计算出指数的真值。 4. 根据尾数位的值,计算出尾数的真值。 5. 将符号位和指数位的真值相乘,得到数值的符号和大小。 6. 将数值的符号和大小与尾数的真值相乘,得到最终的十进制真值。 现在,让我们来计算一下题目中给出的两个 IEEE754 单精度点数十进制真值: (1)43990000H 首先,将 43990000H 转换成二进制数,得到 01000001110010010000000000000000。 按照符号位、指数位和尾数位进行划分,得到符号位为 0(表示正数)、指数位为 10000011(表示指数为 131)和尾数位为 10010010000000000000000。 根据指数位的值,计算出指数的真值:131 - 127 = 4。 根据尾数位的值,计算出尾数的真值:1.00100100000000000000000。 将符号位和指数位的真值相乘,得到数值的符号和大小:1 × 2^4 = 16。 将数值的符号和大小与尾数的真值相乘,得到最终的十进制真值:16 × 1.00100100000000000000000 = 74.625。 因此,IEEE754 单精度点数 43990000H 的十进制真值为 74.625。 (2)00000000H 首先,将 00000000H 转换成二进制数,得到 00000000000000000000000000000000。 按照符号位、指数位和尾数位进行划分,得到符号位为 0(表示正数)、指数位为 00000000(表示指数为 -126)和尾数位为 00000000000000000000000。 根据指数位的值,计算出指数的真值:-126。 根据尾数位的值,计算出尾数的真值:0。 将符号位和指数位的真值相乘,得到数值的符号和大小:1 × 2^-126 = 0。 将数值的符号和大小与尾数的真值相乘,得到最终的十进制真值:0 × 0 = 0。 因此,IEEE754 单精度点数 00000000H 的十进制真值为 0。 希望这个回答能够帮助到你。如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值