Pharmaceutical的同学们都看过来,关于补码运算的复习相关内容

虽然是全英文的课程,这次总结内容不用英文了。

一般在计算机原理中,对两个操作数进行运算会使用C作为进位的标志位,而V作为溢出的标志位。

一般我们学完计算机原理,都知道正数的原码反码补码都一样,而问题都在负数上。负数的反码是原码的除去符号位之外各个位上取反,而负数补码则是除去符号位之外对原码各个位取反再加1。减去一个数等于加上对应的补码。

而溢出情况的判断可使用两种方法:

1 单符号位表示法

两相同符号数相加,结果符号(符号位有进位将1丢掉)与被加数相同,否则为溢出

2 双符号位表示法

00表示运算结果为正数;
01表示运算结果正溢出;
10表示运算结果负溢出;
11表示运算结果为负数。

描述了一堆抽象的东西,不如举例。-3加上-4,如下:

   1111  1101
+ 1111  1100
-------------------------------
  11111 1001(补码形式)

再变成原码,即-7

不知道期末是否会考补码的乘法和除法。不管怎样,这里列一下补码乘除法方法:

补码乘法:

x*y = -(-x*y)

举例-3,-9
101 * 011 = -(011 * 011) = -(01001) = 10111

或者直接让符号位参与运算:

补码除法

第一步:被除数如果和除数同号,则被除数减去除数;如果异号则加上除数;

第n步(n大于1):余数和除数同号,商1,余数左移一位减去除数;若异号,则商0,余数左移一位加上除数。

祝大家考试顺利取得好成绩

原文地址:https://www.cnblogs.com/ubiwind/p/7986765.html