数字电子技术 - 补码算术
补码算术是数字电子技术领域中使用的数学技术系统,主要用于执行各种算术运算,减法。
在这里,我们将介绍数字系统中以下最广泛使用的补码类型 −
- 9 的补码
- 10 的补码
- 1 的补码
- 2 的补码
- 7 的补码
- 8 的补码
- 15 的补码
- 16 的补码
让我们详细讨论这些补码及其在算术运算中的应用。
什么是9 的补数是什么?
在数字电子技术中,9 的补数是一种使用数字系统执行十进制数减法的补数。因此,9 的补数与十进制数系统相关。
- 9 的补数用于执行减法,因为它简化了减法运算。
- 给定十进制数的 9 的补数是通过从 9 中减去该数字的每个数字来找到的。
下表显示每个十进制数字的 9 的补数 −
十进制数字 | 9 的补数 |
---|---|
0 | 9 – 0 = 9 |
1 | 9 – 1 = 8 |
2 | 9 – 2 = 7 |
3 | 9 – 3 = 6 |
4 | 9 – 4 = 5 |
5 | 9 – 5 = 4 |
6 | 9 – 6 = 3 |
7 | 9 – 7 = 2 |
8 | 9 – 8 = 1 |
9 | 9 – 9 = 0 |
让我们借助示例来理解它。
示例 1
查找十进制数 7824.450 的 9 的补数。
解决方案
以下是查找给定十进制数的 9 的补数的分步过程 −
- 7 的 9 的补数 = 9 – 7 = 2
- 8 的 9 的补数 = 9 – 8 = 1
- 2 的 9 的补数 = 9 – 2 = 7
- 4 的 9 的补数 = 9 – 4 = 5
- 4 的 9 的补数 = 9 – 4 = 5
- 5 的 9 的补数 = 9 – 5 = 4
- 0 的 9 的补数 = 9 – 0 = 9
因此,十进制数 7824.450 的 9 的补数为 2175.549。
示例 2
求 45608 的 9 的补数。
解决方案
十进制数 45608 的 9 的补数如下所示 −
- 4 的 9 的补数 = 9 – 4 = 5。
- 5 的 9 的补数 = 9 – 5 = 4。
- 6 的 9 的补数 = 9 – 6 = 3。
- 0 的 9 的补数 = 9 – 0 = 9。
- 8 的 9 的补数 = 9 – 8 = 1。
因此,45608 的 9 的补数是 54391。
什么是 10 的补数?
在数字电子技术中,10 的补数是用于执行十进制数减法的另一种补数。同样,10 的补数的目的是简化十进制减法运算。
有两种方法可以找到十进制数的 10 的补数 −
方法 I −要找到给定十进制数的十进制补数,首先我们通过从 9 中减去数字的每个数字来找到 9 的补数。然后,我们将 9 的补数加 1 以获得十进制补数,即
十进制补数 = 9 的补数 + 1
使用此方法的每个十进制数字的十进制补数在下表中给出 −
十进制数字 | 9 的补数 |
---|---|
0 | 9 – 0 = 9 + 1 = 10 = 0 (Ignore the carry) |
1 | 9 – 1 = 8 + 1 = 9 |
2 | 9 – 2 = 7 + 1 = 8 |
3 | 9 – 3 = 6 + 1 = 7 |
4 | 9 – 4 = 5 + 1 = 6 |
5 | 9 – 5 = 4 + 1 = 5 |
6 | 9 – 6 = 3 + 1 = 4 |
7 | 9 – 7 = 2 + 1 = 3 |
8 | 9 – 8 = 1 + 1 = 2 |
9 | 9 – 9 = 0 + 1 = 1 |
方法 II −在这种方法中,我们可以使用以下公式来查找给定十进制数的 10 的补数,
10 的补数 = 10N – 数字
其中,N 是十进制数的位数。
让我们通过示例了解查找 10 的补数的过程。
示例 1
查找十进制数 4872 的 10 的补数。
解决方案
4872 的 10 的补数可以按以下方式确定 −
查找 4872 的 9 的补数,
9999 – 4872 = 5127
将 9 的补数加 1 得到 10 的补数,
5127 + 1 = 5128
因此,4872 的 10 的补数是 5128。
示例 2
求 2478.98 的 10 的补数。
解决方案
2478.98 的 10 的补数可以通过以下方式找到 −
求 2478.98 的 9 的补数,
9999.99 – 2478.98 = 7521.01
将 9 的补数加 1 得到 10 的补数,
7521.01 + 1 = 7521.02
因此,7521.01 的 10 的补数是 7521.02。
示例 3
求 58942 的 10 的补数。
解决方案
58942 的 10 的补数如下所示 −
58942 的 10 的补数 = 105 – 58942
58942 的 10 的补数 = 100000 – 58942 = 41058
因此,58942 的 10 的补数为 41058。
什么是 1 的补数?
在数字电子技术中,1 的补数是一种用于简化二进制数减法的补数。此外,1 的补数用于表示给定二进制数的负数。
我们可以通过将数字中的所有 0 更改为 1 并将所有 1 更改为 0 来找到二进制数的 1 的补数。
我们还可以通过从 1 中减去数字的每一位来找到二进制数的补码。
但是,1 的补码有一个主要问题,即它对 0 有两种表示形式。其中,00000000 表示正零,其 1 的补码是 11111111,表示 0,但它被称为负零。
让我们考虑一些例子来理解查找二进制数的 1 的补码的过程。
示例 1
找到 101101 的 1 的补码。
解决方案
101101 的 1 的补码可以通过以下方式获得 −
方法 I −通过翻转每个位 −
- 1 的补数 = 0
- 0 的补数 = 1
- 1 的补数 = 0
- 1 的补数 = 0
- 1 的补数 = 0
- 0 的补数 = 1
- 1 的补数 = 0
方法 II −通过从 1 中减去每个位 −
111111 – 101101 = 010010
因此,101101 的 1 的补码是 010010。
示例 2
查找 101101101 的 1 的补码。
解决方案
给定二进制数的 1 的补码是,
1 的补码 = 111111111 – 101101101 = 010010010
因此,101101101 的 1 的补码是010010010。
什么是2的补码?
在数字电子技术中,2的补码是一个广泛用于使用数字系统执行二进制减法的概念。
以下三种方法可用于确定给定二进制数的2的补码 −
方法I − 通过找到1的补码,然后将1加到1的补码中,即
2的补码 = 1的补码 + 1
方法II −通过从 2N 中减去给定的二进制数,即
2 的补数 = 2N – 数字
其中,"N"是数字中的位数。
方法 III −从最低有效位 (LSB) 开始,向下复制直到遇到的第一个 1 位,然后对剩余的位求补码。
让我们通过示例了解查找二进制数的 2 的补码的过程。
示例 1
查找 1100111 的 2 的补码。
解决方案
我们可以按如下方式找到 1100111 的 2 的补码 −
方法 I −使用 1 的补码 −
1100111 的 1 的补码 = 0011000
将 1 添加到 1 的补码以获得 2 的补码,
0011000 + 1 = 0011001
方法 II −使用 2 的补数公式 −
2 的补数 = 27 – 1100111 = 128 – 1100111
2 的补数 = 10000000 – 1100111 = 0011001
方法 III −通过从 LSB 开始向下复制位直到第一个 1 位(包括第一个 1 位) −

示例 2
查找 11001100 的 2 的补码。
解决方案
11001100 的 2 的补码可以通过以下方式获得 −
方法 I −使用 1 的补数 −
11001100 的 1 的补数 = 00110011
2 的补数 = 1 的补数 + 1
2 的补数 = 00110011 + 1
因此,
2 的补数 = 00110100
方法 II − 通过从 2N 中减去该数字 −
2 的补数 = 28 - 11001100
2 的补数 = 100000000 – 11001100 = 00110100
方法 III − 通过将位向下复制到第一个 1 位 −

什么是 7 的补数?
在数字电子技术中,7 的补数是用于简化八进制减法的概念。给定八进制数的 7 的补数可以通过从 7 中减去该数的每个数字来获得。
下表给出了每个八进制数字的 7 的补数 −
八进制数字 | 7 的补数 |
---|---|
0 | 7 – 0 = 7 |
1 | 7 – 1 = 6 |
2 | 7 – 2 = 5 |
3 | 7 – 3 = 4 |
4 | 7 – 4 = 3 |
5 | 7 – 5 = 2 |
6 | 7 – 6 = 1 |
7 | 7 – 7 = 0 |
让我们考虑一些例子来理解求八进制数的 7 的补数的过程。
示例 1
求八进制数 3152 的 7 的补数。
解决方案
3152 的 7 的补数可以通过以下方式获得 −
- 3 的 7 的补数 = 7 – 3 = 4。
- 1 的 7 的补数 = 7 – 1 = 6。
- 5 的 7 的补数 = 7 – 5 = 2。
- 2 的 7 的补数 = 7 – 2 = 5。
因此,3152 的 7 的补数是4625。
示例 2
求八进制数 427102 的 7 的补数。
解决方案
给定数字的 7 的补数按以下方式确定 −
777777 – 427102 = 350675
因此,427102 的 7 的补数为 350675。
什么是 8 的补数?
8 的补数是另一种用于简化八进制减法的补数概念。实际上,它类似于十进制数系统中的 10 的补数。
我们可以按如下方式找到给定八进制数的 8 的补数 −
- 通过从 7 中减去数字的每个数字来找到给定八进制数的 7 的补数。
- 将 7 的补数加 1。
- 结果将是给定八进制数的 8 的补数。
因此,
8 的补数 = 7 的补数 + 1
下表显示每个八进制数字的 8 的补数 −
八进制数字 | 8 的补数 |
---|---|
0 | 7 – 0 = 7 + 1 = 10 = 0 (Ignore the carry) |
1 | 7 – 1 = 6 + 1 = 7 |
2 | 7 – 2 = 5 + 1 = 6 |
3 | 7 – 3 = 4 + 1 = 5 |
4 | 7 – 4 = 3 + 1 = 4 |
5 | 7 – 5 = 2 + 1 = 3 |
6 | 7 – 6 = 1 + 1 = 2 |
7 | 7 – 7 = 0 + 1 = 1 |
让我们借助示例来了解查找 8 的补数的过程。
示例 1
查找 4257 的 8 的补数。
解决方案
4257 的 8 的补数可以通过以下方式找到 −
4257 的 7 的补数 = 7777 – 4257 = 3520
8 的补数 = 7 的补数 + 1
8 的补数 = 3520 + 1 = 3521
因此,4257 的 8 的补数为 3521。
示例2
求 77201 的 8 的补数。
解决方案
给定八进制数的 8 的补数可以按以下方式确定 −
77201 的 7 的补数 = 77777 – 77201 = 00576
8 的补数 = 7 的补数 + 1
8 的补数 = 00576 + 1 = 00577
因此,77201 的 8 的补数为 00577。
15 的补数是多少?
在十六进制数系统中, 15 的补码是一个补码概念,用于简化十六进制数的减法运算。15 的补码类似于十进制数中的 9 的补码。
要找到给定十六进制数的 15 的补码,我们从 15(F)中减去该数字的每个数字。
下表给出了每个十六进制数字的 15 的补码 −
十六进制数字 | 15 的补码 |
---|---|
0 | F – 0 = F |
1 | F – 1 = E |
2 | F – 2 = D |
3 | F – 3 = C |
4 | F – 4 = B |
5 | F – 5 = A |
6 | F – 6 = 9 |
7 | F – 7 = 8 |
8 | F – 8 = 7 |
9 | F – 9 = 6 |
A | F – A = 5 |
B | F – B = 4 |
C | F – C = 3 |
D | F – D = 2 |
E | F – E = 1 |
F | F – F = 0 |
以下示例演示了查找十六进制数的 15 的补数的过程。
示例 1
查找十六进制数 A259C 的 15 的补数。
解决方案
A259C 的 15 的补数可以通过以下方式获得 −
- A 的 15 的补数 = F – A = 5。
- 2 的 15 的补数 = F – 2 = D。
- 5 的 15 的补数 = F – 5 = A。
- 9 的 15 的补数 = F – 9 = 6。
- C 的 15 的补数 = F – C = 3.
因此,A259C 的 15 的补数是 5DA63。
示例 2
求 1BCFA 的 15 的补数。
解决方案
给定十六进制数的 15 的补数是,
FFFFF – 1BCFA = E4305
因此,十六进制数 1BCFA 的 15 的补数是 E4305。
16 的补数是什么?
在十六进制算术中,我们还可以确定给定十六进制数的 16 的补数。 16 的补数是一个用来简化十六进制数减法运算的概念。
我们可以按照下面的 − 所述确定给定十六进制数的 16 的补数。
- 求给定十六进制数的 15 的补数。
- 将得到的 15 的补数加 1。这给出了十六进制数的 16 的补数。
因此,
16 的补数 = 15 的补数 + 1
下表给出了每个十六进制数字的 16 的补数 −
十六进制数字 | 15 的补数 |
---|---|
0 | F – 0 = F + 1 = 10 = 0 (Ignore the carry) |
1 | F – 1 = E + 1 = F |
2 | F – 2 = D + 1 = E |
3 | F – 3 = C + 1 = D |
4 | F – 4 = B + 1 = C |
5 | F – 5 = A + 1 = B |
6 | F – 6 = 9 + 1 = A |
7 | F – 7 = 8 + 1 = 9 |
8 | F – 8 = 7 + 1 = 8 |
9 | F – 9 = 6 + 1 = 7 |
A | F – A = 5 + 1 = 6 |
B | F – B = 4 + 1 = 5 |
C | F – C = 3 + 1 = 4 |
D | F – D = 2 + 1 = 3 |
E | F – E = 1 + 1 = 2 |
F | F – F = 0 + 1 = 1 |
让我们举几个例子来理解求十六进制数的 16 位补数的过程。
示例 1
求 1ABDF7 的 16 位补数。
解决方案
给定十六进制数的 16 位补数可以通过以下方式确定 −
1ABDF7 的 15 位补数 = FFFFFF – 1ABDF7 = E54208
16 位补数 = 15 位补数 + 1
16 位补数 = E54208 + 1 = E54209
因此,1ABDF7 的 16 位补数为E54209。
示例 2
查找 ABC 的 16 的补数。
解决方案
ABC 的 16 的补数是,
ABC 的 15 的补数 = FFF – ABC = 543
16 的补数 = 15 的补数 + 1
16 的补数 = 543 + 1 = 544
因此,ABC 的 16 的补数是 544。
这就是寻找数字电子技术中使用的不同类型的补数。
现在,让我们看看它们在执行减法运算中的应用。
减法使用 9 的补数
9 的补数可用于执行十进制数的减法。在这种方法中,两个十进制数的差是通过将减数的 9 的补数加到被减数上而得到的。
让我们通过一个例子来理解使用 9 的补数进行减法。
示例 1
从 (729)10 中减去 (517)10。
解决方案
在此示例中,我们有,
被减数 = 729
减数 = 517
求 517 的 9 的补数,我们得到
999 – 517 = 482
现在,将 729 和 482 相加,得到 729 和517,我们得到,
729 + 482 = 1211
有一个末端进位,表示结果为正,通过将末端进位添加到中间结果的 LSD 来获得最终结果,即,
211 + 1 = 212
因此,729 和 517 的差为 212。
示例 2
使用 9 的补码方法从 (159)10 中减去 (203)10。
解决方案
在此示例中,
被减数 = 159
减数 = 203
取 203 的 9 的补数,我们得到,
999 – 203 = 796
将 159 和 796 相加,我们得到,
159 + 796 = 955
进位没有终点。因此,最终结果为负数,通过对 955 取 9 的补数获得,即
999 – 955 = 44
因此,减法的最终结果是 159 – 203 = –44。
使用 10 的补数进行减法
我们还可以使用 10 的补数进行十进制减法。使用 10 的补数进行十进制减法的分步过程如下 −
- 步骤 1 − 考虑十进制减法,X – Y。其中,X 是被减数,Y 是减数。
- 步骤 2 −求 Y 的十进制补码。
- 步骤 3 − 将 X 与 Y 的十进制补码相加。
- 步骤 4 − 如果有循环进位,结果将为正,通过丢弃进位获得最终结果。如果没有循环进位,则表示结果为负数,取中间结果的十进制补数并在其前面赋负号即可。
让我们借助示例来理解使用十进制补数的十进制减法。
示例 1
使用十进制补数算法从 (875)10 中减去 (599)10。
解决方案
在此示例中,我们有,
被减数 = 875
减数 = 599
求 599 的十进制补数,我们得到,
599 的十进制补数 = 9 的补数 + 1
因此,
599 的 10 的补数 = (999 – 599) + 1 = 401
将 875 和 401 相加,我们得到,
875 + 401 = 1276
有一个末端进位,表明结果为正,是通过丢弃进位获得的。
因此,875 和 599 的差为 276。
示例 2
使用 10 的补数从 (279)10 中减去 (307)10算术。
解决方案
我们有,
被减数 = 279
减数 = 307
取 307 的 10 的补数,我们得到,
307 的 10 的补数 = (999 – 307) + 1 = 693
将 279 和 693 相加,我们得到,
279 + 693 = 972
没有循环进位,表明结果为负数。最终结果是取 972 的 10 的补数,即
972 的 10 的补数 = (999 - 972) + 1 = 28
因此,最终结果是 -28。
使用 1 的补数进行减法
1 的补数用于二进制减法运算。
两个二进制数(例如 X 和 Y,即 X – Y)的减法可以按照以下步骤使用 1 的补数进行 −
- 步骤 1 − 求减数 (Y) 的补数。
- 步骤 2 − 将 X 与 Y 的补数相加。
- 步骤 3 − 如果有循环进位,则表示结果为正,将循环进位与中间结果的 LSB 相加,即可得到最终结果。如果没有循环进位,结果为负数,取中间结果的 1 的补数并在其前面加上负号即可。
请考虑以下示例,以了解使用 1 的补数算法的二进制减法。
示例 1
使用 1 的补数从 (1011)2 中减去 (111)2。
解决方案
在此示例中,我们有,
被减数 = 1011
减数 = 0111
求减数的 1 的补数,
0111 的 1 的补数 = 1000
添加1011 和 1000,我们得到,
1011 + 1000 = 1 0011
有一个末端进位,表示结果为正。最终结果是将这个循环进位加到中间结果 (0011) 的 LSB 上,即
0011 + 1 = 0100
因此,1011 和 111 的二进制差为 100。
示例 2
使用 1 的补码算法从 (111)2 中减去 (1100)2。
解决方案
我们得到,
被减数 = 0111
减数 = 1100
求减数的 1 的补码,
1 的补码1100 = 0011
将 0111 和 0011 相加,我们得到,
0111 + 0011 = 1010
没有末端进位,表明结果为负,是通过取 1010 的 1 的补码获得的,即,
1010 的 1 的补码 = 0101
因此,111 和 1100 的二进制差为 -101。
使用 2 的补码进行减法
2 的补码也用于在数字系统中执行二进制减法运算。执行两个二进制数(例如 X 和 Y,即 (X – Y))的减法的分步过程如下 −
- 步骤 1 − 找到减数 (Y) 的 2 的补数。
- 步骤 2 − 将 X 和 Y 的 2 的补数相加。
- 步骤 3 − 如果有循环进位,则表示结果为正,最终结果是通过忽略循环进位获得的。如果没有循环进位,则结果为负,通过对中间结果取 2 的补数并在其前面放置一个负号来获得。
让我们看一些例子来理解使用 2 的补数算法进行二进制减法。
示例 1
使用 2 的补码算法从 (1100)2 中减去 (101)2。
解决方案
在此示例中,我们得到,
被减数 = 1100
减数 = 0101
对减数取 2 的补码,我们得到,
0101 的 2 的补码 = (1111 - 0101) + 1 = 1011
将 1100 和 1011 相加,我们得到,
1100 + 1011 = 1 0111
有一个末端进位,表示结果为正,忽略该末端进位即可得到最终结果。
因此,1100 和 101 的二进制差为 111。
示例 2
使用 2 的补码算法从 (0110)2 中减去 (1010)2。
解决方案
给定的数字为,
被减数 = 0110
减数 = 1010
对减数取 2 的补码,我们得到,
1010 的 2 的补码 = (1111 - 1010) + 1 = 0110
将减数和减数的2的补数相加,我们得到,
0110 + 0110 = 1100
由于没有循环进位,表明结果为负数。最终结果是通过对中间结果取 2 的补码获得的,即
1100 的 2 的补码 = (1111 - 1100) + 1 = 0100
因此,0110 和 1010 的二进制差为 -100。
使用 7 的补码进行减法
7 的补码算法可用于执行八进制数的减法。以下是使用 7 的补码执行八进制减法所涉及的步骤。
让我们想从 X 中减去八进制数 Y,即 X – Y,然后
- 步骤 1 −求减数(Y)的7的补数。
- 步骤2 − 将X和Y的7的补数相加。
- 步骤3 − 如果有循环进位,表示结果为正,将循环进位加到中间结果上即为最终结果。如果没有循环进位,结果为负数,可通过对中间结果取 7 的补数并在其前面加上负号来获得。
让我们了解使用 7 的补数算法的八进制减法。
示例 1
使用 7 的补数算法从 (721)8 中减去 (540)8。
解决方案
给定数字为,
被减数 = 721
减数 = 540
对减数取 7 的补数,
540 的 7 的补数 = 777 – 540 = 237
将7的补数与被减数相加,可得:
721 + 237 = 1 160
有一个循环进位,表示结果为正,将这个循环进位加到中间结果中即可得到最终结果,即:
160 + 1 = 161
因此,721与540的八进制差为161。
示例2
使用7的补数法从(121)8中减去(310)8。
解决方案
在此示例中,给定的数字为,
被减数 = 121
减数 = 310
取减数的 7 的补数,我们得到,
310 的 7 的补数 = 777 – 310 = 467
将被减数和减数的 7 的补数相加,即,
121 + 467 = 610
由于进位没有结尾,表明结果为负数,并且是通过取中间结果的 7 的补数获得的,即,
610 的 7 的补数 = 777 – 610 = 167
因此,121 和 310 的八进制差为 -167。
使用 8 的补数进行减法
8 的补数是执行八进制减法的另一种技术。使用 8 的补数执行八进制减法的分步过程如下所述 −
- 步骤 1 − 如果八进制减法定义为 X – Y。然后,找到减数 (Y) 的 8 的补数。
- 步骤 2 − 将 X 和 Y 的 8 的补数相加。
- 步骤 3 −若存在循环进位,则表示结果为正,忽略循环进位,得到最终结果。如果没有循环进位,结果为负数,取中间结果的 8 的补数并在其前面加上负号即可。
让我们通过示例了解使用 8 的补数方法的八进制减法。
示例 1
使用 8 的补数算法从 (712)8 中减去 (103)8。
解决方案
我们得到,
被减数 = 712
减数 = 103
求减数的 8 的补数,我们得到,
103 的 8 的补数 = (777 - 103) + 1 = 675
将减数和减数的 8 的补数相加,我们得到,
712 + 675 = 1607
存在末端循环进位。最终结果是通过忽略末端进位获得的。
因此,712 和 103 的八进制差为 607。
示例 2
使用 8 的补码方法从 (206)8 中减去 (471)8。
解决方案
在此示例中,我们有,
被减数 = 206
减数 = 471
求减数的 8 的补码,
471 的 8 的补码 = (777 - 471) + 1 = 307
将被减数和 8 的补码相加减数,我们得到,
206 + 307 = 515
由于没有循环进位,因此最终结果为负数,并通过对中间结果取 8 的补数获得,即,
515 的 8 的补数 = (777 - 515) + 1 = 263
因此,206 和 471 的八进制差为 -263。
使用 15 的补数进行减法
15 的补数用于执行十六进制数的减法。如果我们想从 X 中减去十六进制数 Y,则我们按照以下步骤操作 −
- 步骤 1 − 求减数 (Y) 的 15 的补数。
- 步骤 2 − 将 X 与 Y 的 15 的补数相加。
- 步骤 3 − 如果有循环进位,表示结果为正,将循环进位加到中间结果上即为最终结果。如果没有循环进位,结果为负数,取中间结果的 15 的补数并在其前面加上负号即可。
以下示例演示了使用 15 的补数算法执行十六进制减法的过程。
示例 1
使用 15 的补数算法从 (E57A)16 中减去 (1920)16。
解决方案
给定的数字为,
被减数 = E57A
减数 = 1920
求减数的 15 的补数,
减数的 15 的补数 = FFFF – 1920 = E6DF
将减数和减数的 15 的补数相加,我们得到,
E57A + E6DF = 1 CC59
有一个末端环绕进位表明结果为正,并且通过将末端环绕进位添加到中间结果获得,即,
CC59 + 1 = CC5A
因此,E57A 和 1920 的十六进制差为 CC5A。
示例 2
使用 8 的补数从 (A209)16 中减去 (DC25)16算术。
解决方案
给定数字,
被减数 = A209
减数 = DC25
查找减数的 15 的补数,
DC25 的 15 的补数 = FFFF – DC25 = 23DA
将被减数和减数的 15 的补数相加,我们得到,
A209 + 23DA = C5E3
因为没有循环进位。结果为负数,通过对中间结果取 15 的补数获得,即
C5E3 的 15 的补数 = FFFF – C5E3 = 3A1C
因此,A209 和 DC25 的十六进制差为 -3A1C。
使用 16 的补数进行减法
16 的补数也用于执行十六进制减法。使用 16 的补数进行十六进制减法所涉及的步骤在此处解释 −
- 步骤 1 −如果十六进制减法定义为 X – Y。然后,求出减数 (Y) 的 16 的补数。
- 步骤 2 − 将 X 和 Y 的 16 的补数相加。
- 步骤 3 − 如果有循环进位,则表示结果为正,忽略循环进位,得到最终结果。如果没有循环进位,则结果为负,取中间结果的 16 的补数,并在其前面加上负号。
让我们看一些例子来理解使用 16 的补码进行十六进制减法。
示例 1
使用 16 的补码算法从 (F9D)16 中减去 (E7C)16。
解决方案
给定的十六进制数为
被减数 = F9D
减数 = E7C
取减数的 16 的补码,我们得到,
E7C 的 16 的补码 = (FFF – E7C) + 1 = 184
将被减数和减数的 16 的补码相加,我们得到,
F9D + 184 = 1121
有一个末端进位,表示结果为正。最终结果是忽略末端进位而得出的。
因此,F9D 和 E7C 的十六进制差为 121。
示例 2
使用 16 的补码方法从 (AC5)16 中减去 (FF2)16。
解决方案
给定的数字为,
被减数 = AC5
减数 = FF2
取减数的 16 的补码,我们得到,
FF2 的 16 的补码 = (FFF – FF2) + 1 = 00E
将被减数和 16 的补码相加减数,我们得到,
AC5 + 00E = AD3
没有末端进位,表明结果为负。最终结果是通过对中间结果取 16 的补数获得的,如下所示 −
AD3 的 16 补数 = (FFF – AD3) + 1 = 52D
因此,AC5 和 FF2 的十六进制差为 -52D。
结论
总之,补数算术是数字电子技术中用于简化减法运算的一种方法。在本章中,我们解释了不同类型的补数及其在减法运算中的应用以及解决的示例。