Digital-electronics 简明教程

Digital Electronics - Complement Arithmetic

补码运算是一种在数字电子领域使用的数学技术系统,主要用于执行各种算术运算,即减法。

在这里,我们将介绍数字系统中以下最常用的几类补码 −

  1. 9’s Complement

  2. 10’s Complement

  3. 1’s Complement

  4. 2’s Complement

  5. 7’s Complement

  6. 8’s Complement

  7. 15’s Complement

  8. 16’s Complement

让我们详细讨论每种补码及其在算术运算中的应用。

What is 9’s Complement?

在数字电子中,9的补码是一种用于使用数字系统对十进制数执行减法的补码。因此,9的补码与十进制数系统相关。

  1. 使用 9 补数进行减法是因为它简化了减法运算。

  2. 给定十进制数的 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

让我们借助示例来理解它。

Example 1

找到十进制数 7824.450 的 9 补数。

Solution

以下是找到给定十进制数的 9 补数的分步过程 -

  1. 7 的 9 补数 = 9 – 7 = 2

  2. 8 的 9 补数 = 9 – 8 = 1

  3. 2 的 9 补数 = 9 – 2 = 7

  4. 4 的 9 补数 = 9 – 4 = 5

  5. 4 的 9 补数 = 9 – 4 = 5

  6. 5 的 9 补数 = 9 – 5 = 4

  7. 0 的 9 补数 = 9 – 0 = 9

因此,十进制数 7824.450 的 9 补数是 2175.549。

Example 2

求 45608 的 9 补数。

Solution

十进制数 45608 的 9 补数如下 −

  1. 4 的 9 补数 = 9 – 4 = 5。

  2. 5 的 9 补数 = 9 – 5 = 4。

  3. 6 的 9 补数 = 9 – 6 = 3。

  4. 0 的 9 补数 = 9 – 0 = 9。

  5. 8 的 9 补数 = 9 – 8 = 1。

因此,45608 的 9 补数是 54391。

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 是十进制数中的位数。

让我们通过示例了解求十进制补数的过程。

Example 1

求十进制数 4872 的十进制补数。

Solution

4872 的十进制补数可确定如下 −

求 4872 的九进制补数,

9999 – 4872 = 5127

对九进制补数加 1 得到十进制补数,

5127 + 1 = 5128

因此,4872 的 10 进制补码是 5128。

Example 2

将 2478.98 的各位补数找出。

Solution

2478.98 的各位补数可按照下面得出 −

找出 2478.98 的九位补数,

9999.99 – 2478.98 = 7521.01

对九进制补数加 1 得到十进制补数,

7521.01 + 1 = 7521.02

因此,7521.01 的各位补数是 7521.02。

Example 3

找出 58942 的各位补数。

Solution

58942 的各位补数如下所示 −

58942 的各位补数 = 105 – 58942

58942 的各位补数 = 100000 – 58942 = 41058

因此,58942 的各位补数是 41058。

What is 1’s Complement?

在数字电子学中,一位补数是一种用于简化二进制数运算的补数类型。此外,一位补数用于表示给定二进制数的负数。

我们可以通过将数字中的所有 0 更改为 1,并将所有 1 更改为 0 来找出二进制数的一位补数。

我们还可以通过将数字的每一位从 1 减去来找出二进制数的一位补数。

然而,一位补数有一个主要问题,即它对 0 有两种表示形式。其中,00000000 表示正零,其一位补数是 11111111,表示 0,但称为负零。

我们来考虑一些示例来理解找出二进制数一位补数的过程。

Example 1

找出 101101 的一位补数。

Solution

101101 的一位补数可以按如下获得 −

Method I − 通过翻转每一位 −

  1. 1 的 1 的补码为 0

  2. 0 的 1 的补码为 1

  3. 1 的 1 的补码为 0

  4. 1 的 1 的补码为 0

  5. 0 的 1 的补码为 1

  6. 1 的 1 的补码为 0

Method II − 将每一位从 1 中减去 −

111111 – 101101 = 010010

因此,101101 的 1 的补码为 010010。

Example 2

求 101101101 的 1 的补码。

Solution

给定二进制数的 1 的补码为:

1 的补码 = 111111111 – 101101101 = 010010010

所以,101101101 的 1 的补码为 010010010。

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 的补码的过程。

Example 1

求 1100111 的 2 的补码。

Solution

我们可以按照如下方式找到 1100111 的 2 的补码:

Method I 使用 1 的补码:

1100111 的 1 的补码 = 0011000

对 1 的补码加 1 以获得 2 的补码,

0011000 + 1 = 0011001

Method II 使用 2 的补码公式:

2 的补码 = 27 – 1100111 = 128 – 1100111

2 的补码 = 10000000 – 1100111 = 0011001

Method III 通过从低有效位开始到第一个 1 位复制位:

2s complement arithmetic

Example 2

找到 11001100 的 2 的补码。

Solution

可以按如下方式得到 11001100 的 2 的补码:

Method I 使用 1 的补码:

11001100 的 1 的补码 = 00110011

2 补码 = 1 补码 + 1

2 的补码 = 00110011 + 1

因此,

2 的补码 = 00110100

Method II 通过在 2N 中减去该数字:

2 的补码 = 28 - 11001100

2 的补码 = 100000000 – 11001100 = 00110100

Method III 通过复制位直到第一个 1 位:

2s complement subtracting number

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 的补数的过程。

Example 1

求八进制数 3152 的 7 的补数。

Solution

3152 的 7 的补数可按如下方式求得 −

  1. 3 的 7 的补数为 7 – 3 = 4。

  2. 1 的 7 的补数为 7 – 1 = 6。

  3. 5 的 7 的补数为 7 – 5 = 2。

  4. 2 的 7 的补数为 7 – 2 = 5。

因此,3152 的 7 的补数为 4625。

Example 2

求八进制数 427102 的 7 的补数。

Solution

下面给出了求给定数字的 7 的补数的确定方法 −

777777 – 427102 = 350675

因此,427102 的 7 的补数是 350675。

What is 8’s Complement?

8 的补数是简化八进制减法而用的另一种补数概念。实际上,它类似于十进制数字系统中的 10 的补数。

我们可以按照以下步骤求出一个给定八进制数的 8 的补数:

  1. 通过逐个将该数的每一位数字从 7 中减去,求出该给定八进制数的 7 的补数。

  2. 在 7 的补数中加 1。

  3. 结果就是给定八进制数的 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 的补数的过程。

Example 1

找到 4257 的 8 进制补码。

Solution

4257 的 8 进制补码可以如下找到:

4257 的 7 进制补码 = 7777 – 4257 = 3520

8 进制补码 = 7 进制补码 + 1

8 进制补码 = 3520 + 1 = 3521

因此,4257 的 8 进制补码是 3521。

Example 2

找到 77201 的 8 进制补码。

Solution

给定八进制数的 8 进制补码可以按如下确定:

77201 的 7 进制补码 = 77777 – 77201 = 00576

8 进制补码 = 7 进制补码 + 1

8 进制补码 = 00576 + 1 = 00577

所以,77201 的 8 进制补码是 00577。

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 的补数的过程。

Example 1

查找十六进制数 A259C 的 15 的补数。

Solution

A259C 的 15 的补数可以按如下方式获取 −

  1. A 的 15 的补数 = F – A = 5。

  2. 2 的 15 的补数 = F – 2 = D。

  3. 5 的 15 的补数 = F – 5 = A。

  4. 9 的 15 的补数 = F – 9 = 6。

  5. C 的 15 的补数 = F – C = 3。

因此,A259C 的 15 进制补码是 5DA63。

Example 2

找到 1BCFA 的 15 进制补码。

Solution

给定十六进制数的 15 进制补码是

FFFFF – 1BCFA = E4305

因此,十六进制数 1BCFA 的 15 进制补码是 E4305。

What is 16’s Complement?

在十六进制算术中,我们还可以确定给定十六进制数的 16 进制补码。16 进制补码是一个用于简化十六进制数减法运算的概念。

我们可以按如下所述确定给定十六进制数的 16 进制补码:

  1. 找到给定十六进制数的 15 进制补码。

  2. 向所得的 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进制补码的过程。

Example 1

求1ABDF7的16进制补码。

Solution

给定的十六进制数的16进制补码可按如下方式确定−

1ABDF7的15进制补码= FFFFFF-1ABDF7=E54208

16进制补码= 15进制补码+1

16进制补码= E54208+1=E54209

因此,1ABDF7的16进制补码是E54209。

Example 2

求ABC的16进制补码。

Solution

ABC的16进制补码为,

ABC的15进制补码= FFF-ABC=543

16进制补码= 15进制补码+1

16进制补码= 543+1=544

因此,ABC 的 16’s 补码是 544。

这些都是关于在数字电子产品中使用的不同类型的补码。

现在,让我们看看它们在执行减法运算中的应用。

Subtraction using 9’s Complement

9’s 补码可用于执行十进制数的减法。在此方法中,通过将被减数的 9’s 补码加到被减数中得到两个十进制数的差值。

让我们通过一个示例来了解使用 9’s 补码进行减法。

Example 1

从 (729)10 中减去 (517)10。

Solution

在此示例中,我们有:

被减数 = 729

减数 = 517

求出 517 的 9’s 补码,得到:

999 – 517 = 482

现在,将 729 和 482 相加得到 729 和 517 的差值,得到:

729 + 482 = 1211

有环形进位,指示结果为正,并且通过将环形进位加到中间结果的 LSD 中得到最终结果,即:

211 + 1 = 212

因此,729 和 517 的差值为 212。

Example 2

使用 9’s 补码方法从 (159)10 中减去 (203)10。

Solution

在此示例中,

被减数 = 159

减数 = 203

999 减去 203,得到:

999 – 203 = 796

将 159 和 796 相加,得到:

159 + 796 = 955

没有环绕进位。因此,最终结果为负,可通过取 955 的 9 的补数得到,即:

999 – 955 = 44

因此,减法 159 – 203 的最终结果为 –44。

Subtraction using 10’s Complement

我们还可以使用 10 的补数进行十进制减法。下面给出了使用 10 的补数执行十进制减法的分步过程 −

  1. Step 1 − 考虑十进制减法 X – Y。其中,X 为被减数,Y 为减数。

  2. Step 2 − 找出 Y 的 10 的补数。

  3. Step 3 − 将 X 和 Y 的 10 的补数相加。

  4. Step 4 − 如果有环绕进位,结果将为正,最终结果可通过丢弃进位得出。如果没有环绕进位,则表示结果为负,可通过取中间结果的 10 的补数得出,并在其前面加上负号。

让我们通过示例了解使用 10 的补数进行十进制减法。

Example 1

使用 10 的补数算术从 (875)10 中减去 (599)10。

Solution

在此示例中,我们有:

被减数 = 875

减数 = 599

求 599 的 10 的补数,得到:

599 的 10 的补数 = 9 的补数 + 1

因此,

599 的 10 的补数 = (999 – 599) + 1 = 401

875 和 401 相加,我们得到:

875 + 401 = 1276

有端部进位,表示结果为正数并且是通过丢弃进位获得的。

因此,875 和 599 的差为 276。

Example 2

使用 10 进制补码运算从 (279)10 中减去 (307)10。

Solution

我们有:

被减数 = 279

减数 = 307

求 307 的 10 进制补码,我们得到:

307 的 10 进制补码 = (999 - 307) + 1 = 693

将 279 和 693 相加,我们得到:

279 + 693 = 972

没有端部进位,表示结果为负数。最终结果是求 972 的 10 进制补码,即:

972 的 10 进制补码 = (999 - 972) + 1 = 28

因此,最终结果为 -28。

Subtraction using 1’s Complement

1 进制补码用于二进制减法运算。

两个二进制数的减法,例如 X 和 Y,即 X - Y,可以使用 1 进制补码按以下步骤执行:

  1. Step 1 − 求出减数 (Y) 的 1 进制补码。

  2. Step 2 − 将 X 和 Y 的 1 进制补码相加。

  3. Step 3 − 如果有环绕进位,则表示结果为正,最终结果是通过将环绕进位加到中间结果的最低有效位 (LSB) 获得的。如果没有环绕进位,则结果为负,获得的方法是取中间结果的 1 的补码,并在其前面放一个负号。

考虑以下示例来理解使用 1 的补码算术的二进制减法。

Example 1

使用 1 的补码从 (1011)2 中减去 (111)2。

Solution

在此示例中,我们有:

被减数 = 1011

减数 = 0111

查找 1 的补码减数,

0111 的 1 的补码 = 1000

将 1011 和 1000 相加,得到,

1011 + 1000 = 1 0011

存在环绕进位,表示结果为正。最终结果是通过将此环绕进位加到中间结果 (0011) 的 LSB,即获得的,

0011 + 1 = 0100

因此,1011 和 111 的二进制差为 100。

Example 2

使用 1 的补码算术从 (111)2 中减去 (1100)2。

Solution

我们得到,

被减数 = 0111

减数 = 1100

查找 1 的补码减数,

1100 的 1 的补码 = 0011

将 0111 和 0011 相加,得到,

0111 + 0011 = 1010

没有环绕进位,表示该结果为负,并且通过取 1010 的 1 的补码获得,即:

1010 的 1 的补码 = 0101

因此,111 和 1100 的二进制差为 -101。

Subtraction using 2’s Complement

2 的补码也用于使用数字系统执行二进制减法运算。执行两个二进制数(例如 X 和 Y)的减法、即 (X – Y) 的步骤如下:

  1. Step 1 − 求被减数 (Y) 的 2 的补码。

  2. Step 2 − 添加 X 和 Y 的 2 的补码。

  3. Step 3 − 如果有环绕进位,则表示结果为正,并且最终结果通过忽略环绕进位获得。如果没有环绕计入,则结果为负,并且通过取中间结果的 2 的补码获得,并在其前面加上负号。

让我们看一些示例来了解使用 2 的补码运算法则执行二进制减法。

Example 1

使用 2 的补码运算法则从 (1100)<sub>2</sub>中减去 (101)<sub>2</sub>。

Solution

此示例中,我们所给的是:

被减数 = 1100

减数 = 0101

取减数的 2 的补码,我们得到:

0101 的 2 的补码 = (1111 - 0101) + 1 = 1011

添加 1100 和 1011,我们得到:

1100 + 1011 = 1 0111

存在环绕进位,表示结果为正且最终结果通过忽略此环绕进位获得。

因此,1100 和 101 的二进制差为 111。

Example 2

使用 2 的补码算法从 (0110)2 中减去 (1010)2。

Solution

给定的数字为:

被减数 = 0110

减数 = 1010

取减数的 2 的补码,我们得到:

1010 的 2 的补码 = ((1111 - 1010) + 1) = 0110

被减数与减数的 2 的补码相加,得到:

0110 + 0110 = 1100

由于没有环绕进位,表明结果为负数。最终结果通过求中间结果的 2 的补码得到,即:

1100 的 2 的补码 = ((1111 - 1100) + 1) = 0100

因此,0110 和 1010 的二进制差为 -100。

Subtraction using 7’s Complement

7 的补码算法可用于执行八进制数的减法。以下是使用 7 的补码执行八进制减法的步骤:

令我们要从 X 中减去八进制数 Y,即 X – Y,则

  1. Step 1 − 求减数 (Y) 的 7 的补码。

  2. Step 2 − 将 X 和 Y 的 7 的补码相加。

  3. Step 3 − 如果有环绕进位,则表明结果为正数,且最终结果通过将环绕进位加到中间结果来获得。如果没有环绕进位,则结果为负数,且通过求中间结果的 7 的补码并在其前面加上负号获得。

让我们了解一下使用 7 的补码算法的八进制减法。

Example 1

使用 7 的补码算法从 (721)8 中减去 (540)8。

Solution

给定的数字为:

被减数 = 721

被减数 = 540

取被减数的 7 补码,

540 的 7 补码 = 777 – 540 = 237

加 7 补码和被减数,得,

721 + 237 = 1 160

有进位环绕,表明结果为正,最终结果通过将进位环绕加到中间结果,来得到,即

160 + 1 = 161

因此,721 和 540 的八进制差是 161。

Example 2

用 7 补码法从 (121)8 中减去 (310)8。

Solution

在这个例子中,给定的数字是,

被减数 = 121

被减数 = 310

取被减数的 7 补码,得,

310 的 7 补码 = 777 – 310 = 467

加被减数和被减数的 7 补码,即,

121 + 467 = 610

由于没有进位环绕,表明结果为负,可以通过获取中间结果的 7 补码来得到,即,

610 的 7 补码 = 777 – 610 = 167

因此,121 和 310 的八进制差是 -167。

Subtraction using 8’s Complement

8 的补数是另一个用于执行八进制减法的技术。下面解释了使用 8 的补数执行八进制减法的逐步过程 −

  1. Step 1 - 如果八进制减法定义为 X – Y。然后,找出被减数 (Y) 的 8 的补数。

  2. Step 2 - 将 X 和 Y 的 8 的补数相加。

  3. Step 3 - 如果存在进位,则表示结果为正,最终结果通过忽略进位获得。如果没有进位,则结果为负,并通过取中间结果的 8 的补数并在此前面加负号来获得。

让我们通过示例了解使用 8 的补数方法的八进制减法。

Example 1

使用 8 的补数算法从 (712)8 中减去 (103)8。

Solution

我们得到,

被减数 = 712

减数 = 103

找出减数的 8 的补数,我们得到,

103 的 8 的补数 = (777 - 103) + 1 = 675

将被减数和减数的 8 的补数相加,我们得到,

712 + 675 = 1607

存在进位。最终结果通过忽略进位获得。

因此,712 和 103 的八进制差为 607。

Example 2

使用 8 的补数方法从 (206)8 中减去 (471)8。

Solution

在此示例中,我们有:

被减数 = 206

减数 = 471

找出减数的 8 的补数,

471 的 8 的补数 = (777 - 471) + 1 = 307

将被减数和减数的 8 的补数相加,我们得到,

206 + 307 = 515

由于没有环绕进位,因此最终结果为负数,可通过获取中间结果的 8 进制补码来获得,即:

515 的 8 进制补码 = (777 - 515) + 1 = 263

因此,206 和 471 的 8 进制差为 -263。

Subtraction using 15’s Complement

15 的补码用于执行十六进制数的减法。如果我们要从 X 中减去十六进制数 Y,则遵循以下步骤:

  1. Step 1 − 求出被减数 (Y) 的 15 的补码。

  2. Step 2 − 对 X 与 Y 的 15 的补码求和。

  3. Step 3 − 如果有环绕进位,则表明结果为正数,最终结果可以通过将环绕进位添加到中间结果中得到。如果没有环绕进位,则结果为负数,可通过获取中间结果的 15 的补码,并在其前面加上负号得到。

以下示例演示了使用 15 的补码算术执行十六进制减法的过程。

Example 1

使用 15 的补码算术从 (E57A)16 中减去 (1920)16。

Solution

给定的数字为:

被减数 = E57A

减数 = 1920

求出减数的 15 的补码:

减数的 15 的补码 = FFFF – 1920 = E6DF

将被减数和减数的 15 的补码相加,得到:

E57A + E6DF = 1 CC59

存在环绕进位,表明结果为正数,可通过将环绕进位添加到中间结果中得到,即:

CC59 + 1 = CC5A

因此,E57A 和 1920 的十六进制差为 CC5

Example 2

使用 8 的补码运算,从 (A209)16 中减去 (DC25)16。

Solution

给定的数字为:

被减数 = A209

减数 = DC25

求减数的 15 的补码,

DC25 的 15 的补码 = FFFF - DC25 = 23DA

相加被减数和减数的 15 的补码,得到,

A209 + 23DA = C5E3

由于没有环绕进位。结果为负数,且可通过取中间结果的 15 的补码得到,即

C5E3 的 15 的补码 = FFFF - C5E3 = 3A1C

因此,A209 和 DC25 的十六进制差为 -3A1C。

Subtraction using 16’s Complement

16 的补码也可用于执行十六进制减法。以下是使用 16 的补码进行十六进制减法的步骤:

  1. Step 1 - 如果十六进制减法被定义为 X - Y。则求减数 (Y) 的 16 的补码。

  2. Step 2 - 相加 X 与 Y 的 16 的补码。

  3. Step 3 - 如果有环绕进位,则表明结果为正数,最终结果为忽略环绕进位后得到的结果。如果没有环绕进位,则结果为负数,且可通过取中间结果的 16 的补码并在其前面加上负号而得到。

让我们看一些示例,以了解使用 16 的补码进行十六进制减法。

Example 1

使用 16 的补码运算,从 (F9D)16 中减去 (E7C)16。

Solution

所给的十六进制数为

被减数 = F9D

减数 = E7C

通过对被减数进行 16 进制补码计算,我们得到,

E7C 的 16 进制补码 = (FFF – E7C) + 1 = 184

对被减数和被减数的 16 进制补码进行加法计算,我们得到,

F9D + 184 = 1121

产生了循环进位,表示结果为正数。通过忽略循环进位即可获得最终结果。

因此,F9D 和 E7C 的十六进制差为 121。

Example 2

通过 16 进制补码法从 (AC5)16 中减去 (FF2)16。

Solution

给定的数字为:

被减数 = AC5

被减数 = FF2

通过对被减数进行 16 进制补码计算,我们得到,

FF2 的 16 进制补码 = (FFF – FF2) + 1 = 00E

对被减数和被减数的 16 进制补码进行加法计算,我们得到,

AC5 + 00E = AD3

没有产生循环进位,表示结果为负数。通过对中间结果进行 16 进制补码计算,得到最终结果,如下所示 −

AD3 的 16 进制补码 = (FFF – AD3) + 1 = 52D

因此,AC5 和 FF2 的十六进制差为 -52D。

Conclusion

总结来说,补码运算是一种在数字电子产品中用于简化减法运算的方法。在本章中,我们解释了不同类型的补码及其在减法运算中的应用,并给出了已解决的示例。