请教一个计算机组成原理的浮点数问题!

  • 进位制是一种计数方式,亦称进位计数法或位值计数法

  • 有限种数字符号来表示无限的数值

  • 使用的数字符号的数目称为这种进位制的基数或底数

  • 计算机喜欢二进制,但是二进制表达太长了

  • 使用大进制位可以解决这个问题

  • 八进制、十六进制满足2的n次方的要求

+表示正数,-表示负数

  • 使用0表示正数、1表示负数

  • 规定符号位位于数值第一位

  • 表达简单明了,是人类最容易理解的表示法

0有两种表示方法:00、10

原码进行运算非常复杂,特别是两个操作数符号不同的时候

  • 判断两个操作数绝对值大小

  • 使用绝对值大的数减去绝对值小的数

  • 对于符号值,以绝对值大的为准

希望能找到不同符号操作数更加简单的运算方法

希望找到使用正数代替负数的方法

使用加法操作代替减法操作,从而消除减法

, x=13 ,计算x的二进制原码和补码

例子2:x=-13,计算x的二进制原码和补码

例子3:x=-7,计算x的二进制原码和补码

例子4:x=-1,计算x的二进制原码和补码

在负数的补码计算过程中,还是使用了减法

  • 减法运算复杂,希望找到使用正数替代负数的方法
  • 使用假发代替减法操作,从而消除减法

反码的目的是找出原码和补码之间的规律,消除转换过程中的减法。

正数的补码和反码都是它本身

负数的反码等于原码除符号位外按位取反

负数的补码等于反码+1

  • 小数点固定在某个位置的数称为定点数

  • 计算机处理的很大程度上不是纯小数或纯整数
  • 数据范围很大,定点数难以表达

单精度浮点数:使用4字节、32位来表达浮点数(float)

双精度浮点数: 使用8字节、64位来表达浮点数(double)

  • 当定点数与浮点数位数相同时,浮点数表示的范围更大

  • 当浮点数尾数为规格化数时,浮点数的精度更高

  • 浮点数运算包含阶码和尾数,浮点数的运算更为复杂

  • 浮点数位数实际小数位与阶码有关

  • 阶码按小阶看齐大阶的原则

对齐的目的是使得两个浮点数阶码一致,使得尾数可以进行运算

}

因为有效数字的位数是被限制死的,而前导零会占用有效数字的空间,所以前导零越多有效数字越少,因此去除前导零才能保证有效数字位数的最大化。

比如3/4是0.11,有效数字是2位的11,但数字0.11却使用了3位;而3/16,0.0011,有效数字依然只有2位,但数字增大到了5位。

这个时候要怎么办呢,写作1.1*2^(-1),和1.1*2^(-3),就消除了前导零。

当然这一步是相当平凡的。

同时我们发现,除了0以外,有效数字的首位一定是1,因此这个1也可以省略,所以以上两个数字就变成了.1e-1和.1e-3,只使用了1位就表示了2位有效数字。

这种省略首位1的表示法就是ieee 754所规定的“正规化”,这种表示法将所需的有效数字位数减少了一位,或者说,将允许的有效数字位数增加了一位。

}

原码为, 因为是正数, 补码和原码一样

整个浮点数怎么表示由自己去组合吧

}

我要回帖

更多关于 计算机组成原理浮点数表示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信