【计算机组成原理】溢出
·
什么叫溢出呢?
就是计算出的数超过了缓冲区的范围,导致部分数值丢失的操作。
比如说n+1位定点整数X的补码的表示范围就是:
-2n ≤ X <2n
上面这道例题看上去一点问题也没有奥,但是再一看题干你就会发现:两个正数相加,结果怎么就变成负数了?
同样带着这个问题往下看,
类似的问题又出现了:两个负数相加,结果怎么就变成正数了?
这里就涉及到了一开始提到的溢出问题,
第一道例题产生了正溢出,也就是说两个正整数相加之和大于所能表示的最大的数;
同理,第二道例题产生了负溢出,也就是说两个负整数相加之和小于所能表示的最小的数
在之后的计算中,如果能事先判断好是否会产生溢出,就会省很大的计算量,下面介绍两种方法:
- 双符号位补码法
对带着符号位的补码进行计算:
①如果计算结果前两位是00,就是正数。
②如果计算结果前两位是11,就是负数。
③如果计算结果前两位是01,就是正溢出。
④如果计算结果前两位是10,就是负溢出。
(注:无论溢出与否,最高位都表示正确的符号) - 单符号位法
①最高有效位有进位,符号位无进位→正溢出
②最高有效位无进位,符号位有进位→负溢出
下面举例说明双符号位补码法用法,
下面举例说明单符号位法用法,
更多推荐
已为社区贡献5条内容
所有评论(0)