此文章参考链接入口
1、原码
纠正一点我长期以来的错误认知。
八位二进制数的范围为[-127,127],原因是最高位是符号位(0为)并不参与计算
[1111 1111 , 0111 1111]
2、反码
正数的反码是其本身,例如:01010111的反码为 01010111
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 例如:11010111的反码是10101000
3、补码
正数的补码就是其本身,例如:01010111的补码为 01010111
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
例如:11010111的反码为 10101001
说完这样,再顺便记下减法的操作,在计算机中并不存在减法,当作减法时,我们把减数转换为补码再相加。举个栗子:
(1)8-5=[00001000]原码 +[1000 0101]原码 =[0000 1000]补码+[ 1111 1011 ]补码==[0000 0011]补码
在此计算出的结果我们需要对得出的八位二进制数取补码,那才是最终结果,3
(2)6-8=[0000 0110 ]补码+[1111 1000]补码=[1111 1110]原码=[1000 0010]原码
结果为(-2).