ones complement体系,twos complement

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:56:03
ones complement体系是将每位二进制数求反.这样会产生一个结果,那就是会使一个0有两种表示,或者全0,或者全1.
...
 000...00011 = +3
  000...00010 = +2
  000...00001 = +1
 000...00000 = +0
  111...11111 = -0
  111...11110 = -1
 111...11101 = -2
  111...11100 = -3
  ...
这种简单的机制会产生-0 + 1 = +0,为避免这种情况,引入twos-complement.

"twos complement"是将二进制求反加1,忽略溢出.
...
  000...00011 = +3
  000...00010 = +2
 000...00001 = +1
  000...00000 = 0
  111...11111 = -1
 111...11110 = -2
  111...11101 = -3
  ...
这就避免了对0的两种表示.
twos complement 的最高位The most significant bit (MSB)是符号位,"1"代表负数,n位 twos complement 数是 -2^(n-1) to 2^(n-1)-1:
n minimum value maximum
4 -8 7
8-128 127
12 -2048 20477
20 -524288 524287

以下是 8-bit 的例子:

twos complement binary twos complement hex integer
000000000x00 0
00000001 0x01 1
01111111 0x7F 127
10000000 0x80 -128
11111110 0xFE -2
11111111 0xFF -1

比如十进制-44的二进制表示,是将44转换成二进制,然后求反加1,便会得到期望的结果.