Digital-electronics 简明教程
Digital Electronics - Complement Arithmetic
补码运算是一种在数字电子领域使用的数学技术系统,主要用于执行各种算术运算,即减法。
在这里,我们将介绍数字系统中以下最常用的几类补码 −
-
9’s Complement
-
10’s Complement
-
1’s Complement
-
2’s Complement
-
7’s Complement
-
8’s Complement
-
15’s Complement
-
16’s Complement
让我们详细讨论每种补码及其在算术运算中的应用。
What is 9’s Complement?
在数字电子中,9的补码是一种用于使用数字系统对十进制数执行减法的补码。因此,9的补码与十进制数系统相关。
-
使用 9 补数进行减法是因为它简化了减法运算。
-
给定十进制数的 9 补数是通过用 9 减去数字的每个位数来找到的。
下表显示了每个十进制数字的 9 补数 -
Decimal Digit |
9’s Complement |
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 |
让我们借助示例来理解它。
What is 10’s Complement?
在数字电子学中,10 补数是用于执行十进制数减法的另一种类型的补数。同样,10 补数的目的是简化十进制减法运算。
有两种求十进制数的 10 补数的方法 −
Method I − 要求给定十进制数的 10 补数,首先通过用 9 减去该数的每一位数来求得 9 补数。然后,我们向 9 补数加 1 来获得 10 补数,即,
10 的补数 = 9 的补数 + 1
使用此方法,每个十进制数字的 10 补数如下表所示 −
Decimal Digit |
9’s Complement |
0 |
9 – 0 = 9 + 1 = 10 = 0(忽略进位) |
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 |
Method II − 本方法中,我们可以使用下列公式找到给定十进制数的十进制补数,
十进制补数 = 10N – 数
其中,N 是十进制数中的位数。
让我们通过示例了解求十进制补数的过程。
Solution
4872 的十进制补数可确定如下 −
求 4872 的九进制补数,
9999 – 4872 = 5127
对九进制补数加 1 得到十进制补数,
5127 + 1 = 5128
因此,4872 的 10 进制补码是 5128。
What is 1’s Complement?
在数字电子学中,一位补数是一种用于简化二进制数运算的补数类型。此外,一位补数用于表示给定二进制数的负数。
我们可以通过将数字中的所有 0 更改为 1,并将所有 1 更改为 0 来找出二进制数的一位补数。
我们还可以通过将数字的每一位从 1 减去来找出二进制数的一位补数。
然而,一位补数有一个主要问题,即它对 0 有两种表示形式。其中,00000000 表示正零,其一位补数是 11111111,表示 0,但称为负零。
我们来考虑一些示例来理解找出二进制数一位补数的过程。
What is 2’s Complement?
在数字电子学中,2 的补码是一个使用数字系统进行二进制减法的概念。
这里有三种方法可以用来确定给定二进制数的 2 的补码 −
Method I − 通过求出 1 的补码,然后向 1 的补码中添加 1,即
2 的补码 = 1 的补码 + 1
Method II − 通过将给定的二进制数从 2N 中减去,即
2 的补码 = 2N – 数字
其中,“N”是数字中的位数。
Method III − 从最低有效位 (LSB) 开始,逐位抄写至遇到第一个 1 位为止,然后对剩下的位求补。
让我们通过实例了解求二进制数的 2 的补码的过程。
What is 7’s Complement?
在数字电子中,7 的补码是一个用于简化八进制减法的概念。给定八进制数的 7 的补码可以通过从 7 中减去该数字的每一位得到。
八进制数字的 7 的补数在下面的表格中给出 −
Octal Digit |
7’s Complement |
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 的补数的过程。
What is 8’s Complement?
8 的补数是简化八进制减法而用的另一种补数概念。实际上,它类似于十进制数字系统中的 10 的补数。
我们可以按照以下步骤求出一个给定八进制数的 8 的补数:
-
通过逐个将该数的每一位数字从 7 中减去,求出该给定八进制数的 7 的补数。
-
在 7 的补数中加 1。
-
结果就是给定八进制数的 8 的补数。
因此,
8 的补数 = 7 的补数 + 1
下表显示了每个八进制数位的 8 的补数:
Octal Digit |
8’s Complement |
0 |
7 – 0 = 7 + 1 = 10 = 0(舍弃进位) |
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 的补数的过程。
What is 15’s Complement?
在十六进制数字系统中,15 的补码是用于简化十六进制数字减法运算的一种补码概念。15 的补码类似于十进制数系统中的 9 的补码。
若要找到给定十六进制数的 15 的补码,我们用 15(F)减去该数的每个数字。
每个十六进制数字的 15 的补码在以下表格中给出:
Hexadecimal Digit |
15’s Complement |
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 的补数的过程。
What is 16’s Complement?
在十六进制算术中,我们还可以确定给定十六进制数的 16 进制补码。16 进制补码是一个用于简化十六进制数减法运算的概念。
我们可以按如下所述确定给定十六进制数的 16 进制补码:
-
找到给定十六进制数的 15 进制补码。
-
向所得的 15 进制补码添加 1。这样就得到了十六进制数的 16 进制补码。
因此,
16 进制补码 = 15 进制补码 + 1
每个十六进制数字的 16 进制补码在以下表中给出:
Hexadecimal Digit |
15’s Complement |
0 |
F – 0 = F + 1 = 10 = 0(忽略进位) |
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进制补码的过程。
Subtraction using 9’s Complement
9’s 补码可用于执行十进制数的减法。在此方法中,通过将被减数的 9’s 补码加到被减数中得到两个十进制数的差值。
让我们通过一个示例来了解使用 9’s 补码进行减法。
Subtraction using 10’s Complement
我们还可以使用 10 的补数进行十进制减法。下面给出了使用 10 的补数执行十进制减法的分步过程 −
-
Step 1 − 考虑十进制减法 X – Y。其中,X 为被减数,Y 为减数。
-
Step 2 − 找出 Y 的 10 的补数。
-
Step 3 − 将 X 和 Y 的 10 的补数相加。
-
Step 4 − 如果有环绕进位,结果将为正,最终结果可通过丢弃进位得出。如果没有环绕进位,则表示结果为负,可通过取中间结果的 10 的补数得出,并在其前面加上负号。
让我们通过示例了解使用 10 的补数进行十进制减法。
Subtraction using 1’s Complement
1 进制补码用于二进制减法运算。
两个二进制数的减法,例如 X 和 Y,即 X - Y,可以使用 1 进制补码按以下步骤执行:
-
Step 1 − 求出减数 (Y) 的 1 进制补码。
-
Step 2 − 将 X 和 Y 的 1 进制补码相加。
-
Step 3 − 如果有环绕进位,则表示结果为正,最终结果是通过将环绕进位加到中间结果的最低有效位 (LSB) 获得的。如果没有环绕进位,则结果为负,获得的方法是取中间结果的 1 的补码,并在其前面放一个负号。
考虑以下示例来理解使用 1 的补码算术的二进制减法。
Subtraction using 2’s Complement
2 的补码也用于使用数字系统执行二进制减法运算。执行两个二进制数(例如 X 和 Y)的减法、即 (X – Y) 的步骤如下:
-
Step 1 − 求被减数 (Y) 的 2 的补码。
-
Step 2 − 添加 X 和 Y 的 2 的补码。
-
Step 3 − 如果有环绕进位,则表示结果为正,并且最终结果通过忽略环绕进位获得。如果没有环绕计入,则结果为负,并且通过取中间结果的 2 的补码获得,并在其前面加上负号。
让我们看一些示例来了解使用 2 的补码运算法则执行二进制减法。
Subtraction using 7’s Complement
7 的补码算法可用于执行八进制数的减法。以下是使用 7 的补码执行八进制减法的步骤:
令我们要从 X 中减去八进制数 Y,即 X – Y,则
-
Step 1 − 求减数 (Y) 的 7 的补码。
-
Step 2 − 将 X 和 Y 的 7 的补码相加。
-
Step 3 − 如果有环绕进位,则表明结果为正数,且最终结果通过将环绕进位加到中间结果来获得。如果没有环绕进位,则结果为负数,且通过求中间结果的 7 的补码并在其前面加上负号获得。
让我们了解一下使用 7 的补码算法的八进制减法。
Subtraction using 8’s Complement
8 的补数是另一个用于执行八进制减法的技术。下面解释了使用 8 的补数执行八进制减法的逐步过程 −
-
Step 1 - 如果八进制减法定义为 X – Y。然后,找出被减数 (Y) 的 8 的补数。
-
Step 2 - 将 X 和 Y 的 8 的补数相加。
-
Step 3 - 如果存在进位,则表示结果为正,最终结果通过忽略进位获得。如果没有进位,则结果为负,并通过取中间结果的 8 的补数并在此前面加负号来获得。
让我们通过示例了解使用 8 的补数方法的八进制减法。
Subtraction using 15’s Complement
15 的补码用于执行十六进制数的减法。如果我们要从 X 中减去十六进制数 Y,则遵循以下步骤:
-
Step 1 − 求出被减数 (Y) 的 15 的补码。
-
Step 2 − 对 X 与 Y 的 15 的补码求和。
-
Step 3 − 如果有环绕进位,则表明结果为正数,最终结果可以通过将环绕进位添加到中间结果中得到。如果没有环绕进位,则结果为负数,可通过获取中间结果的 15 的补码,并在其前面加上负号得到。
以下示例演示了使用 15 的补码算术执行十六进制减法的过程。
Subtraction using 16’s Complement
16 的补码也可用于执行十六进制减法。以下是使用 16 的补码进行十六进制减法的步骤:
-
Step 1 - 如果十六进制减法被定义为 X - Y。则求减数 (Y) 的 16 的补码。
-
Step 2 - 相加 X 与 Y 的 16 的补码。
-
Step 3 - 如果有环绕进位,则表明结果为正数,最终结果为忽略环绕进位后得到的结果。如果没有环绕进位,则结果为负数,且可通过取中间结果的 16 的补码并在其前面加上负号而得到。
让我们看一些示例,以了解使用 16 的补码进行十六进制减法。