原码 正数是数值本身 符号位是0 负数是数值本身 符号位是1 8位二进制的范围[-127,127]
反码 正数是数值本身 符号位是0 负数的数值部分是在正数表示的基础上对各个位取反 符号位是1 8位二进制的范围[-127,127]
补码 正数是数值本身 符号位是0 负数的数值部分是在正数表示的基础上对各个位取反后加1, 符号位是1 8位二进制的范围[-128,127]
为了加速计算机对加减乘除的运算速度,减少额外的识别成本,反码和补码应运而生;
1-2=1+(-2)=-1 1-2 = 1+(-2) = [0000 0001]原+[1000 0010] 原=[1000 0011]原 = -3这个结果显然不正确
为了解决这一问题, 出现了反码的编码形式
1-2=1+(-2)=-1 1-2 = 1+(-2) = [0000 0001]反+[1111 1101] 反 = [1111 1110]反 = -1
不可解决位和为0的状况
2-2=2+(-2)= 0 2-2=2+(-2)=[0000 0010]补+[1111 1110]补 = [0000 0000] = 0
[1000 0000]补 表示-128
原文:https://www.cnblogs.com/fdy-study-consist/p/12158475.html