知识点一:IEEE754单精度(32位)的二进制排列规则:符号位S(1位,0为正数,1为负数) + 阶码E(8位) + 尾数M(23位)
知识点二:单精度的偏置常数为127(固定值),阶码 = 127 + 阶
例子一:将十进制数33.758转换为IEEE754的单精度浮点数格式表示
步骤①:将整数部分整除以2,取余数部分倒序排列
33 / 2 = 16 余数为1
16 / 2 = 8 余数为0
8 / 2 = 4 余数为0
4 / 2 = 2 余数为0
2 / 2 = 1 余数为0
1 / 2 = 0 余数为1
得到整数部分二进制为 1000 01
步骤②:将小数部分乘以2,取商的整数部分正序排列
0.758 * 2 = 1.516 取商的整数部分1 1.516 - 1 = 0.516
0.516 * 2 = 1.032 取商的整数部分1 1.032 - 1 = 0.032
0.032 * 2 = 0.064 取商的整数部分0
0.064 * 2 = 0.128 取商的整数部分0
0.128 * 2 = 0.256 取商的整数部分0
0.256 * 2 = 0.512 取商的整数部分0
0.512 * 2 = 1.024 取商的整数部分1 1.024 - 1 = 0.024
0.024 * 2 = 0.048 取商的整数部分0
0.048 * 2 = 0.096 取商的整数部分0
0.096 * 2 = 0.192 取商的整数部分0
0.096 * 2 = 0.384 取商的整数部分0
0.384 * 2 = 0.768 取商的整数部分0
0.768 * 2 = 1.536 取商的整数部分1 1.536 - 1 = 0.536
0.536 * 2 = 1.072 取商的整数部分1 1.072 - 1 = 0.072
0.072 * 2 = 0.144 取商的整数部分0
0.144 * 2 = 0.288 取商的整数部分0
0.288 * 2 = 0.576 取商的整数部分0
0.576 * 2 = 1.152 取商的整数部分1 1.152 - 1 = 0.152
0.152 * 2 = 0.304 取商的整数部分0
尾数可以取23位,但因小数点后第一位"1"不显式地表示出来,这样可用23位来表示24位尾数,因前面整数已经占6位,则小数部分只能取18位,即1100 0010 0000 1100 01
故33.758转换为二进制为:1000 01.1100 0010 0000 1100 01
步骤③:小数点向左移,直到整数部分为1,即1.00001110000100000110001 * 2 ^ 5
至此得到阶为5,阶码 = 5 + 127 = 132 转换成二进制为1000 0100,即阶码E = 1000 0100
尾数M为1.后面的数,即00001110000100000110001
步骤④:根据数值的正负定义符号位
33.758 > 0 所以符号位S为0
步骤⑤:根据知识点一进行数值组装
得到IEEE754的单精度浮点数格式为
符号位S(1位,0为正数,1为负数) + 阶码E(8位) + 尾数M(23位)
0 1000 0100 0000 1110 0001 0000 0110 001
本文参考:https://blog.csdn.net/crjmail/article/details/79723051
进制转换工具:http://tool.oschina.net/hexconvert
单精度验证工具:http://www.binaryconvert.com/convert_float.html
原创文章,转载请注明出处,谢谢