(一) 概念
以8位的字长为例
正数补码==原码
负数补码为,除符号位外取反,然后加1
(二) 为什么要用补码
补码是为了解决减法的问题。因为二进制表示中最高位是符号位,如果要让计算机电路在计算过程中识别符号位,会让电路变得复杂,所以干脆让符号位直接参与运算。
显然,在减法的情况下会出问题。如果换做补码的话
2 + 3 = [0000 0010] + [0000 0011][补码] = [0000 0101][补码] = 52 - 3 = 2 + (-3) = [0000 0010][补码] + [1111 1101][补码] = [1111 1111][补码] = [1000 0001][原码] = -1很好的解决了减法的问题,将加法和减法合并为了一套电路。