我是靠谱客的博主 活力花生,最近开发中收集的这篇文章主要介绍补码表示的浮点数的规格化及示数范围,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转自:补码表示的浮点数的规格化及示数范围


一、规格化

对二进制浮点数N = m x rm ^ e(rm为尾数的基),若尾数m满足1/2≤|m|<1,即尾数最高位数字为“1”,则为规格化的数。

补码来说:如果是正数,尾数的最高位为“1”;如果是负数,尾数的最高位应为“0”(即1.0x...x),或为“1”而以后各位全为“0”(即1.10...0)。前者小于-1/2,后者正好等于-1/2。

为了机器判断方便,在补码表示中,往往不把-1/2列入规格化的数。这样,补码规格化数规定如下:

对正数m ≥ 0,如果 1 > m ≥ 1/2,称为规格化数,其补码表示形式为:0.1x...x ;对负数x<0,如果 -1/2> m ≥ -1(注意:补码表示的时候可取-1),称为规格化数,其补码表示形式为:1.0x...x。 其中x表示可任取“0”或“1”。

因此,机器只要判断运算结果的符号位与第一位数字是否相同,便可知道是否是规格化的数。


二、示数范围

1个浮点数需要用以下6个参数来表示:

* 尾数的基rm。在不同的数制中,可以分别取值为 rm = 2、4、8、16、10。

* 尾数的值m。

* 尾数的长度p。p的值与尾数采用的基rm有关,p位长的尾数的rm进制数的尾数为p' = p / [ log2(rm) ]。

* 阶码的基re。一般取re = 2。

* 阶码的值e。

* 阶码的长度q。由于re = 2,因此q的值就是e的二进制数的位数。

(1)当尾数的值m采用原码表示时,规格化浮点数N的示数范围为

(rm ^ (-1)) x (rm ^ ( - re ^ q)) ≤ N ≤ (1 - rm ^ ( -p')) x (rm ^ ( re ^ q -1))

(2)当尾数的值m采用补码表示时,规格化浮点数N的示数范围在正数区间与m采用原码表示时相同,在负数区间的示数范围为

- (rm ^ (re ^ q -1)) ≤ N ≤ - (rm ^ (-1) + rm ^ (-p)) x (rm ^ ( - re ^ q))

最后

以上就是活力花生为你收集整理的补码表示的浮点数的规格化及示数范围的全部内容,希望文章能够帮你解决补码表示的浮点数的规格化及示数范围所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部