二进制数的反码(英语:1's complement)是指将二进制数每个数字反转得到的数:若某一位为0,则使其变为1,反之亦然。[1]

“反码”的各地常用名称
中国大陆反码、一的补码
台湾一补数
港澳一补码
8位数值的原码与反码进行计算
转换为十进制所得真值比较
原码 将符号位作为有
实际含义的位所得值
用反码表示
所得值
0111 1111 127  127 
0111 1110 126  126 
0000 0010 2  2 
0000 0001 1  1 
0000 0000 0  0 
1111 1111 255  −0 
1111 1110 254  −1 
1111 1101 253  −2 
1000 0001 129  −126 
1000 0000 128  −127 

反码表示法(英语:1's complement system)是一种在电脑中用机器码表示有符号数的方式之一,其中正数使用原码,负数使用反码。该表示法常简称反码

  • 反码以有符号位元的二进制数定义。[需要解释]
  • 反码是有符号位元的二进制数。[需要解释]
  • 正数和0的反码就是该数字本身。

反码在很多算术运算中的表现与这个数的相反数很相似,此特性可使加法电路同时可以运算减法。然而,由于反码中存在多余的负零和其它问题,此方式并未像补码一样被广泛应用。

表示方式

使用反码表示有符号数的方法如下

 

式中,N为真值,n为编码的位数。

显然,正数的反码等于其原码,而负数的反码则可以通过保留其符号位,将原码的数值位取反得到。

例如,使用4个位元时,+3是0011,用反码表示-3便是1100。下表列出了4-bit二进数所能表示的整数。

二进制数 无符号位元 有符号位元 为反码时 为补码时
0000 0 0 0 0
0001 1 1 1 1
0010 2 2 2 2
0011 3 3 3 3
0100 4 4 4 4
0101 5 5 5 5
0110 6 6 6 6
0111 7 7 7 7
1000 8 -0 -7 -8
1001 9 -1 -6 -7
1010 10 -2 -5 -6
1011 11 -3 -4 -5
1100 12 -4 -3 -4
1101 13 -5 -2 -3
1110 14 -6 -1 -2
1111 15 -7 -0 -1

相关条目

参考资料

  1. ^ M Morris Mano; Michael D Ciletti. Digital design : with an introduction to the verilog hdl. 培生教育. 2013: 第27页. ISBN 9780273764526.