原码、反码、补码
原码——最高位为符号位,0代表正数,1代表负数。
正数的原码、反码、补码,都是它本身。
负数的反码——保持符号位不变,对原码按位取反
负数的补码——它的反码加1
移码——无论正数、负数,在补码的基础上有符号位取反。
例子:
-43 原码:1010 1011
反码:1101 0100
补码:1101 0101
移码:0101 0101
n位二进位原码表示的其取值范围:-( 2 n − 1 2^{n-1} 2n−1-1)~ 2 n − 1 2^{n-1} 2n−1-1
n位二进位反码表示的其取值范围:-( 2 n − 1 2^{n-1} 2n−1-1)~ 2 n − 1 2^{n-1} 2n−1-1
n位二进位补码表示的其取值范围: − 2 n − 1 -2^{n-1} −2n−1~ 2 n − 1 2^{n-1} 2n−1-1
补码表示与原码表示多表示一个数。
小技巧:
求负数的补码:符号位不变,其他的从低位开始,直到遇到第一个1之前,什么都不变。
遇到第一个1后保留这个1,以后按位取反。
[-30]原=1001 1110
[-30]补=1110 0010
在计算机中,最适合进行数字加减运算的数字编码是补码,最适合表示浮点数阶码的数字编码是移码。