先决条件–数字补码
补码的使用主要是执行减法。如果我们想使用逻辑门来实现减法,那么我们可以轻松地执行加法,因为我们需要更多的逻辑门(因为我们需要考虑借用这种东西)。因此,如果我们以某种方式使其成为简单的表达式,即我们正在使用较便宜的电路来实现这些操作。
每个base-r系统基本上有2种补语类型:
1.基数补码((r-1)的补码)减少:
如果我们给以n为基数的n为n,则(r-1)的补数或减基数补码定义为–
(r^n - 1) - N
范例1:
让我们取r = 10,即我们需要找到一个数字的9的补数。设数字为N,则N的9的补码为
10^n -1 -N i.e. 999....99 (n digits) - N
范例2:
让我们取N = 1988。在这里,r = 10且n = 4,所以1988年的9的补数为
9999 - 1998 = 8001
范例3:
让我们取N =01234。在这里,r = 10且n = 5,所以01234的9的补码为
99999 - 01234 = 98765
- 对于二进制数,r = 2
- 因此2 ^ n表示为100…00(1,后跟n 0)
- 这意味着2 ^ n -1表示为1…11(n 1’s)
- 对于二进制1的补码,我们看到它具有全1,即1-1 = 0和1-0 = 1
- 这意味着,如果仅将1从0更改为0,将0从1更改为0,我们将直接获得其补码。
范例4:
让我们取N = 010010和r = 2以及n =6。因此,N的直接1的补码为
111111-010010 = 101101
2.基数补语(r的补语):
如果给我们以n为底的r中具有n个数字的N,则(r)的补码或基数补码定义为:
rn - N
这与将(r-1)的补语加1以获得r的补数相同。
范例1:
令N = 12345且n = 5且r =10。因此N的10的补码为
100000 - 12345 = 98765
令N = 010101,n = 6和r = 2
因此2的补码就是1的补码+1,即将1更改为0,将0更改为1,然后将1加到数字上。所以010101的2的补码是
101010+1 = 101011
我们也可以进行上述操作,因为可以通过保留所有最低有效0和前1不变并在所有其他较高有效数字中将1替换为0并将0替换为1来形成2的补码。
示例2: 0110111的2的补码为1001001使用r和r-1的补数执行减法:用数字硬件实现减法时,借用方法的效率不及使用补数的方法。 (需要更多的电路)。进行减法操作之前要牢记的一件事是确保两者的位数相同。
base-r中两个n位无符号数字M – N的减法可以如下进行–
范例1:
- 使用10的补码找到98765 – 4321
- 因此,上述也意味着找到98765 – 04321的值
- 让我们计算04321的10的补码为
100000 - 04321 = 95679
将N的10的补码加到M 98765 + 95679 = 194444,我们得到1的进位,这意味着MN为正。因此,如果有任何结果,只要除去进位,就可以得到答案,所以答案为94444。
范例2:
- 使用10的补码找到4321-98765,我们需要计算04321-98765
- 所以先计算98765的10的补数
- 98765的10的补码是
100000 - 98765 = 01235
So, 01235 + 04321 = 05556
由于没有进位(即最高有效数字为1),该数字为负数,现在我们需要再次取10的补码,并在05556前面加上减号,即
-(100000 - 05556) = -94446