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

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


一、规格化

对二进制浮点数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))

  • 14
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
1. 变形补码加减运算: 变形补码是一种用于表示负数的二进制编码方式。在进行加减运算时,需要先将被加数和加数转换为变形补码,然后进行运算,最后将结果转换为原码。 举个例子: 假设需要计算 -5 + 3 的结果,步骤如下: - 将 -5 转换为变形补码:首先将 5 转换为二进制数 00000101,然后按位取反得到 11111010,最后将结果加 1 得到变形补码 11111011。 - 将 3 转换为变形补码:3 的二进制表示为 00000011,因此它的变形补码和原码相同,都是 00000011。 - 进行加法运算:将两个变形补码相加,得到 11111110。 - 将结果转换为原码:将 11111110 转换为原码,首先减去 1 得到 11111101,然后按位取反得到 00000010,最后加上符号位得到 -2,即 -5 + 3 = -2。 2. 浮点数规格化表示浮点数规格化表示是指将一个浮点数表示为一个带有指数和尾数的定点数的形式。其中,指数部分表示浮点数的位移量,尾数部分表示浮点数的有效数字。规格化表示的目的是为了方便进行浮点数的比较和计算。 举个例子: 假设需要表示浮点数 0.0125,它可以表示为 1.25 * 10^-2 的形式。将这个数表示规格化形式需要进行以下步骤: - 将 1.25 转换为二进制数:1.25 的二进制表示为 1.01。 - 将指数部分表示为二进制数:10^-2 的指数部分为 00000010。 - 在尾数部分前加上一个隐含的 1,得到 1.01。 - 将尾数部分向左移动两位,得到 101。 - 将指数部分和尾数部分拼接起来,得到规格化表示:0 00000010 101。其中,第一位表示符号位,0 表示正数。指数部分为 00000010,尾数部分为 101。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值