补码在数字计算机中用于促进减法运算和逻辑操作。每个基 r 系统有两种补码方法:r 的补码和 (r - 1) 的补码。
(r - 1) 的补码
9的补
给定一个以 r 为基数的数 N 有 n 个数字,N 的 (r n - 1) 的补码表示为 (r n - 1) - N。对于十进制数 r = 10 和 r - 1 = 9,因此N 的 9 的补码是 (10 n - 1) - N。
现在,10 n定义了一个数字,其中包括一个 1 后跟 n 个 0。10 n – 1 是由 n 个 9 定义的数字。例如,当 n = 4 时,我们有 10 4 = 10000 和 10 4 - 1 = 9999。因此,十进制数的 9 的补码是通过从 9 中减去每个数字来获得的。例如,546700 的 9 的补码是 999999 - 546700 = 453299 而 12389 的 9 的补码是 99999 - 12389 = 876I0。
1 的补码
对于二进制数,r = 2 且 r - 1 = 1,因此 N 的 1 的补码为 (2 n - 1) - N。2 n由一个二进制数描述,该二进制数包括 1 和 n 个 0。2 n - 1 是由 n 个 1 定义的二进制数。例如,当 n = 4 时,我们有 2 4 = (10000) 2和 2 4 - 1 = (1111) 2。因此,二进制数的 1 的补码是通过从 1 中减去每个数字来获得的。从 1 中减去二进制数会创建从 0 变为 1 或从 1 变为 0 的位。因此,二进制数的 1 的补码是通过将 1 修改为 0 并将 0 修改为 1 来构造。例如,1011001 的 1 的补码是 0100110,而 1'
八进制或十六进制数的 (r - 1) 的补码是通过分别从 7 或 F(十进制 15)中减去每个数字而获得的。
(r's) 补码
10的补
以 r 为基数的 n 位数字 N 的 r 补码表示为 r n - N 表示 N 0 和 0 表示 N = 0。与 (r - 1) 的补码对比,我们看到 r 的补码是获得的通过在 (r - 1) 的补码中插入 1,因为 r n - N = [(r n - 1) - N] + 1。
因此,十进制 2389 的 10 的补码为 7610 + 1 = 7611,是通过在 9 的补码值中插入 1 获得的。二进制 101100 的 2 的补码是 010011 + 1 = 010100,它是通过在 1 的补码值中插入 1 获得的。
2的补码
2 的补码可以通过保留所有最低有效位 0 和第一个 1 不变,然后在所有其他较大的有效位中恢复 1 的 0 和 0 的 1 来产生。1101100 的 2 的补码是 0010100,它是通过保留两个低位 0 和第一个 1 不变而获得的,然后在其他四个最高有效位中将 1 恢复为 0 和 0 恢复为 1。