阶码全位0尾数全为0,正负由符号位决定
阶码全为1尾数全为0,正负由符号位决定
顺帶解释为什么要有非规格化数
大家知道浮点数是有隐藏位“ 1 ”的
这里就需要有非规格化数了
因为阶码全为0的非规格化数的隐藏位是“ 0 ”,这时就可以处理 0 的问题了!
但是它还有其他作用。
这里顺带引出所谓的规格化数
阶码非0且阶码不全为1 这里看一下规格化数的最小值
根据语法,阶码的最小值为1
你会发现这个数字要比非规格化数要大
所以说非规格化数还用于处理比规格化数更小的数值
非规格化数有两個作用:
2.处理比规格化数更小的数值
NaN也叫非数,用于定义异常数据
下面我拿C++举一个例子
再让我们看看这个非数b 内存中的情况
非数定义阶碼全为1,尾数非0
所以看到非数的时候,就说明你的程序在运算时出现了这样类似的错误哦!
关于输出不是NaN是不同编译器处理方式略有鈈同的缘故
上面我用的是VS2012,原因是当初学C的时候就是用的这个比较熟悉
后来我去Dev跑了同一段程序,然后就输出了非数
顺带给大家看一下峩在Java实验的结果
NaN, 非数定义异常数据