二进制补码
二进制补码主要是为了解决负整数的加减法运算(减法转化为加法)。
补码表示法
原码表示法就是用二进制的最高位表示符号,0表示正数,1表示负数。以8位为例:1就是表示为0000 0001,-1表示为1000 0001.
而补码的规则是正整数保持不变,针对负整数,除符号位外,其他位全部取反,然后+1。
注:负整数中,原码转补码是符号位不变,按位取反+1.补码转原码也一样,符号位不变,按位取反+1.
比如-1,取反结果为1111 1110(符号位不变),再+1,补码为1111 1111.
特殊之处的说明:
1.原码表示中,0和-0可以分别表示为0000 0000和1000 0000,同一个数有两种表示,不方便计算机处理。而转换为补码之后却是一样的,0的补码为0000 0000不变,-0:1000 0000反码为1111 1111,+1得补码0000 0000.因此不用特殊处理。
2.除符号位外,7位二进制数能表示的范围是0~127,127的原码和补码都是0111 1111,正数符号位为0,所以8为二进制能表示的最大的正数就只能到127了。那负数的情况呢,这里有一个特殊的规定,就是在补码中用1000 0000表示-128。所以8位二进制数的范围为-128到127.
补码的作用
减法转换为加法:
例:5-3转为5+(-3)
0000 0101
1111 1101
1 0000 0010
舍去最高位得0000 0010 也就是2.
例:-5-2 转为-5 + (-2)
1111 1011
1111 1110
1 1111 1001
舍去最高位的1111 1001
取反1000 0110 +1得到1000 0111 也就是-7