IEEE754
一、定义:什么是IEEE754
IEEE754标准中规定float单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位来表示指数,用23 位来表示尾数,即小数部分。对于double双精度浮点数,用 1 位表示符号,用 11 位表示指数,52 位表示尾数,其中指数域称为阶码。
IEEE754规定:
单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023;
注:单精度偏移量: 01111111 转成十进制 = 127=1+2+4+8+16+32+64
约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则为52);
下面讲述使用IEEE754标准表示浮点数:
176.0625表示为单精度浮点数:
解:
1).先将176.0625转换为二进制数
小数点前:176 / 2 = 88 余数为 0
88 / 2=44 余数为 0
44 / 2 =22 余数为 0
22 / 2= 11 余数为 0
11 / 2 =5 余数为 1
5 / 2=2 余数为 1
2/ 2 =1 余数为 0
1/ 2=0 余数为 1 商为0,结束。
小数点前整数转换为二进制:10110000
小数点后:小数部分乘以2,取整数部分,直至乘积小数部分为0
0.0625 * 2 = 0.125 整数为0
0.125 * 2 = 0.25 整数为0
0.25* 2 = 0.50 整数为0
0.5* 2 = 1.0 整数为1,小数部分为0,结束
小数点后的小数位转换为二进制:0001
故176.0625转换为二进制为:10110000.0001
2).IEEE754约定小数点左边隐含有一位,通常这位数是1,所以10110000.0001=1.01100000001 * 2^7(小数点向左偏移7位);
IEEE754约定单精度指数偏移量为127,所以176.0625使用IEEE754标准表示时,指数偏移量为 7+127=134 ,即:10000110
IEEE754约定单精度尾数长度为23,所以176.0625使用IEEE754标准表示时,尾数为:01100000001000000000000
尾数 = 二进制10110000.0001 去掉1 和小数点 剩余位补0 一共 23位
176.0625>0,即为正数,所以符号位为0
3)由上得出:176.0625使用IEEE754规格化后的表示为:0 10000110 01100000001000000000000
300 转成双精度浮点数
0 10000000111 0010110000000000000000000000000000000000000000000000
解析:
300转成2进制=100101100
100101100=1.00101100*2^8 所以指数偏移量=8+1023=1031
1031转成2进制=10000000111 (7个0)
尾数为 300转成2进制的100101100 去掉1 之后的数字都补0 (一共52位)
300>0 所以首位(符号位)为0
所以 300 = 0 10000000111 0010110000000000000000000000000000000000000000000000
注:尾数减一的相关说明:
大概是如果一个数大于 1 时是这样的
小于 1 有点儿区别
大于小于是指绝对值
————————————————
参考链接:https://blog.****.net/crjmail/article/details/79723051