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,余数左移一位加上除数。
祝大家考试顺利取得好成绩
己所不欲勿施于人;练兵先练将