概述
首先是规格化数的定义:
在浮点数中,为了在尾数中表示最多的有效数据位,同时使浮点数具有唯一的表示方式,浮点数的编码应当采用一定的规范,规定尾数部分用纯小数给出,而且尾数的绝对值应大于或等于1/R,并小于或等于1,即小数点后的第一位不为零。这种表示的规范称为浮点数的规格化的表示方法。不符合这种规定的数据可通过修改阶码并同时移动尾数的方法使其满足这种规范。
假设尾数是W,且基数为2,则当1/2<=|W|<1时,此浮点数为规格化数。
原码的尾数规格化:小数的最高位必须是1
补码的规格化形式:0.1*****.或者 1.0*****
特别规定:-1/2不是规格化的数,-1是规格化的数
进一步思考,若基数不是2,基数是4,也就意味着用2位二进制位表示一个数,1/4<=|W|<1
当基数为4时,尾数的最高两位不全为0(对于正浮点数)或者尾数最高两位不全为1(对于负浮点数)的数为规格化数。
当基数为8时,尾数的最高三位不全为0(对于正浮点数)或者尾数最高三位不全为1(对于负浮点数)的数为规格化数。
另:进一步发现,若基数越大,实际上能表示的数的范围就越大,数的表示就越精确。
订正:你的发现错了!!
基数越大,可表示的浮点数范围越大,这没错;但是基数越大,浮点数的精度会下降!!!!
对于该问题的重要理解:
精度实际上是和尾数的有效位数息息相关的,假设此时基数为8,则 0.001…也是规格化数
但基数为2 则 0.1.....是规格化数,明显多了两位有效位
所以基数为2时,规格化精度最高!!
例1:source:2018年真题
IEEE754单精度浮点数表示的数中,最小的规格化正数为 1.0*
思考:
IEEE754单精度表示的数中,最大的规格化正数为 (2-)*
分析:这个问题里有一个关键点就是IEEE尾数是用原码表示的,同时最高位隐藏了1,所以不管你尾数怎么着,数据一定是规格化的。
最后
以上就是火星上人生为你收集整理的数据规格化的总结的全部内容,希望文章能够帮你解决数据规格化的总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复