最近整理一些html资料,有篇关于二进制补码的,看了还是比较模糊,索性不如自己试验下,负数,补码,反码究竟是啥关系?!
计算机中加减的运算都通过加来求值,减去一个数等于加上这个数的负值,这是可以理解的。
负数的表示是在最高位置1来区分,这还不够,严格的说是通过对其正数的补码来表达负值,所谓补码就是 反码+1。其实这才是负数的最高位为1的理由!
来到了主题,负数为什么可以用 "反码 + 1" 来表达?
和其它真理一样,这也是先人宝贵发现之一,它可以简化计算机硬件的加减运算,只要加加就可以了,而不像人工计算那样,还需要用到借位思想。
要证明这个定理,可分如下几步:
1) 这种方法的表达值 与 正值相加 等于 0; (负数的定义)
2) 与较大的正值相加,结果会让该正值抵消掉其负值大小,而变小; (减法的特性之一)
3) 与较小的正值,与负值相加, 结果... ; (减法的其它特性)
我发现1)和 2)是可以证明的,3)应该也没问题。下面是补码作为负数的表达,可以让 1) 和 2) 通过的理解和描述。
1)正数+负数 = 正数 + 正数反码 + 1 == 0;