一、前言
备考软考初级程序员证书时,卡在单精度浮点数规格化问题,教程及网络资料讲解过于专业化,故搜集资料后自行整理了解题过程,在此做个记录,希望能帮到各位,有问题欢迎评论区指出。
二、题型
利用IEEE 754标准将八/十/十六进制数表示为单精度浮点数。
三、公式
参考资料:规格化浮点数-百度百科
- S为数的符号位,0表示正数,1表示负数
- M为尾数,IEEE 754标准规定尾数最高有效位为1【即:应为“1.XXX...XX”的格式】
- P为阶码
- x为偏移值,单精度时为127,双精度时为1023
四、解题步骤
- 将八/十/十六进制数转换为二进制数;
- 将二进制数表示为浮点数形式:
(E为阶码,F为尾数);
- 按照IEEE 754标准将浮点数转换为相应精度的浮点数;
- F转换为1.M的格式
- E转换为P-x的格式
- 代入公式:
;
- 得出S、P、M的值,均要转换为二进制;
- 根据题目要求的精度补齐位数,不足补0:
- 单精度(32位):S占1位,P占8位,M占23位;
- 双精度(64位):S占1位,P占11位,M占52位;
五、例题
1)正十进制数转换为单精度浮点数:176.0625
【类似于十进制的科学技术法,此处为浮点表示法】
代入公式得:S=0, M=01100000001, P=134=10000110
补齐32位得:0 1000 0110 0110 0000 0010 0000 0000 000
2)负十进制数转换为单精度浮点数:-0.125
代入公式得:S=1, M=0, P=124=01111100
补齐32位得:1 0111 1100 0000 0000 0000 0000 0000 000