单精度的浮点数

2022-04-05 科技 276阅读

对于内部存储数据(00111111)2:
符号位
(最左侧)S=0。这表示是个正数
指数
(左侧第2-9位)E=(01111110)2=(126)10,所以e=E-127=-1。
尾数
(最后的23位)M=(11001100110)2,m=(1.M)2=(1.7999999523162841796875)10
该二进制小数转为10进制的计算方式为1+(1/2+1/4)+(1/32+1/64)+(1/512+1/1024)……
实际值
N=1.7999999523162841796875*2^-1=0.89999997615814208984375
(其实,这个数据是0.9的单精度浮点数的实际内部存储,可以看到有一定的误差)
这里继续给出另外几个数字的实例:
使用竖线|将各个段位分隔显示
实际值|符号位|;指数|;尾数
1|
2|
-6.5|1|10000001|10100000000最大表示范围:单精度浮点数可以表示的范围为±3.40282*10^38(1.1111...1×2^127)
接近于0的最小值:单精度浮点数可以表示1.175*10-38(1.00...0×2^-126)的数据而不损失精度。
当数值比以上值小的时候,将会由于尾数的有效位数减少而逐步丧失精度(IEEE754的规定),或者有的系统则直接采用0值来简化处理过程。浮点数以有限的32bit长度来反映无限的实数集合,因此大多数情况下都是一个近似值。同时,对于浮点数的运算还同时伴有误差扩散现象。
特定精度下看似相等的两个浮点数可能并不相等,因为它们的最小有效位数不同。
由于浮点数可能无法精确近似于十进制数,如果使用十进制数,则使用浮点数的数学或比较运算可能不会产生相同的结果。
如果涉及浮点数,值可能不往返。值的往返是指,某个运算将原始浮点数转换为另一种格式,而反向运算又将转换后的格式转换回浮点数,且最终浮点数与原始浮点数相等。由于一个或多个最低有效位可能在转换中丢失或更改,往返可能会失败。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com