计算机组成原理——加减运算 & 溢出判断
Posted 流楚丶格念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机组成原理——加减运算 & 溢出判断相关的知识,希望对你有一定的参考价值。
原码的加减运算
原码的加法运算:
- 正+正 → 绝对值做加法,结果为正 (可能会溢出)
- 负+负 → 绝对值做加法,结果为负 (可能会溢出)
- 正+负 → 绝对值大的减绝对值小的,符号同绝对值大的数
- 负+正 → 绝对值大的减绝对值小的,符号同绝对值大的数
原码的减法运算,“减数”符号取反,转变为加法:
- 正-负 → 正+正
- 负-正 → 负+负
- 正-正 → 正+负
- 负+正 → 负-负
补码的加减运算
对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。
补充:
1. 求[-B]补
[-B]补 : [B]补连同符号位一起取反加1
2. 负数补 → 原:
①数值位取反+1;
②负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码
例题
我们先看一道例题:设机器字长为8位(含1位符号位),A = 15,B = -24,求[A+B]补和[A−B]补
先将A B的原码补码都求出来
[A+B]补 = [A]补 + [B]补 = 0,0001111 + 1,1101000 = 1,1110111
原码:1,0001001 真值-9
[A-B]补 = [A]补 + [-B]补 = 0,0001111 + 0,0011000 = 0,0100111
真值+39
我们将题改一下:
其中 C = 124,求[A+C]补和[B−C]补,按照上面方法求出可得:
[A+C]补 = 0,0001111 + 0,1111100 = 1,0001011 真值-117 溢出(实际应该是139,但是溢出后是 -117)
[B−C]补 = 1,1101000 + 1,0000100 =0,1101100 真值+108
溢出判断
溢出条件
- 只有“正数+正数 ”才会上溢 —— 正+正=负
- 只有“负数+负数 ”才会下溢 —— 负+负=正
溢出判断:采用双符号位
正数符号为00,负数符号为11
[A+C]补 = 00,0001111 + 00,1111100 = 01,0001011 上溢
[B−C]补 = 11,1101000 + 11,0000100 = 10,1101100 下溢
记两个符号位为S1 S2 ,则V=S1异或S2
- 若V=0,表示无溢出;
- 若V=1,表示有溢出。
以上是关于计算机组成原理——加减运算 & 溢出判断的主要内容,如果未能解决你的问题,请参考以下文章
考前自学系列·计算机组成原理·补码定点加减运算和溢出判断,浮点数的加减运算,原码的乘法
(计算机组成原理)第二章数据的表示和运算-第二节4:定点数的加减运算和溢出判断