【软考】按IEEE754规则规格化单精度浮点数

一、前言

备考软考初级程序员证书时,卡在单精度浮点数规格化问题,教程及网络资料讲解过于专业化,故搜集资料后自行整理了解题过程,在此做个记录,希望能帮到各位,有问题欢迎评论区指出。

二、题型

利用IEEE 754标准将八/十/十六进制数表示为单精度浮点数。

三、公式

参考资料:规格化浮点数-百度百科

\left ( -1 \right )^{S}\times 1.M\times 2^{P-x}

  • S为数的符号位,0表示正数,1表示负数
  • M为尾数,IEEE 754标准规定尾数最高有效位为1【即:应为“1.XXX...XX”的格式】
  • P为阶码
  • x为偏移值,单精度时为127,双精度时为1023

四、解题步骤

  1. 将八/十/十六进制数转换为二进制数;
  2. 将二进制数表示为浮点数形式:2^{E}\times F (E为阶码,F为尾数);
  3. 按照IEEE 754标准将浮点数转换为相应精度的浮点数;
    • F转换为1.M的格式
    • E转换为P-x的格式
    • 代入公式:\left ( -1 \right )^{S}\times 1.M\times 2^{P-x}
  4. 得出S、P、M的值,均要转换为二进制;
  5. 根据题目要求的精度补齐位数,不足补0:
    • 单精度(32位):S占1位,P占8位,M占23位;
    • 双精度(64位):S占1位,P占11位,M占52位;

 五、例题

1)正十进制数转换为单精度浮点数:176.0625

(176.0625)_{10}

\Rightarrow (1011 0000.0001)_{2}

\Rightarrow 0.1011 0000 0001\times 2^{8}【类似于十进制的科学技术法,此处为浮点表示法】

\Rightarrow 1.0110 0000 001\times 2^{7}

\Rightarrow (-1)^{0}\times (1.0110 0000 0010)\times 2^{134-127}

代入公式得:S=0, M=01100000001, P=134=10000110

补齐32位得:0 1000 0110 0110 0000 0010 0000 0000 000

2)负十进制数转换为单精度浮点数:-0.125

(-0.125)_{10}

\Rightarrow (-0.001)_{2}

\Rightarrow -1\times 2^{-3}

\Rightarrow (-1)^{1}\times (1.0)\times 2^{124-127}

代入公式得:S=1, M=0, P=124=01111100

补齐32位得:1 0111 1100 0000 0000 0000 0000 0000 000

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值