计算机组成原理
1. 了解 原码、反码、补码。
以 8 位二进制 为例
机器字长 n=8,最高位是符号位:
- 正数:
0- 负数:
1
原码(最直观)
作用:给人看的,用来表示正负。
正数:符号位0,数值位就是绝对值。
负数:符号位1,数值位就是绝对值。
例:
+5原码:0000 0101-5原码:1000 0101
反码(过渡用)
作用:只是求补码的中间步骤,本身几乎不用。
正数:反码 = 原码
负数:符号位不变,数值位 按位取反
例:
+5反码:0000 0101-5反码:1111 1010
补码(真正干活的)
作用:让计算机只用加法器就能做减法!
正数:补码 = 原码 = 反码
负数:补码 = 反码 + 1
例:
+5补码:0000 0101-5补码:1111 1011
计算 -5+2
首先计算都是用补码进行计算。
- -5 补码:
1111 1011 - +2补码:
0000 0010
直接相加(二进制加法)
1111 1011 (-5)
+ 0000 0010 (+2)
= 1111 1101得到结果补码:1111 1101 符合位是1为负数
补码减 1 得到反码 1111 1100 ,反码取反等于源码即 1000 00 11 也就是 -3
计算 -5+6
补码计算:
-5 补码:
1111 10116 补码 :
0000 0110
直接相加:
1111 1011 + 0000 0110 =1 0000 0001最高位进位 1 溢出丢掉,结果:
0000 0001结果是正数,补码 = 原码
结果:0000 0001 = 1
定理
- ~负数 = 正数 - 1
- ~ -4 = 3
- -4 补码 1111 1100
- -4 补码取反 000 0011 = 3
