-5的原码、反码和补码分别是10000101、11111010和11111011。而5的原码、反码和补码则是00000101、01111010和01111011。
计算机中的存储系统都是用二进制储存的,对我们输入的每一个信息它都会自动转变成二进制的形式,而二进制在存储的时候就会用到原码,反码和补码。例如,输入25,原码是11001,反码是00110,补码是00111。
补码是为了计算方便而发明的。原始计算器只能做加法不能做减法,但是科学家发现,例如7+(-5)=2可以这样算:7+(-5)= 7+(10000-5)-10000= 10002- 10000= 2。这很奇怪,因为机器太傻,只能做加法,但是虽然不会减法,-10000还是很方便的,只要去掉开头的1;用10000减也是很方便的,因为可以用9999减然后+1,而用9999减,只要把每一位用9减。
计算机中的减法算式:当执行 5- 7=-2 的操作时,我们可以采用补码计算的方式来简化运算。
对于数字 5,它的 8位补码表示为 0000 0101。而-7的补码则是 1111 1001。如果我们将这两个补码相加,就可以得到结果 (0) 1111 1101,这实际上就是-2的补码。
通过这种方式,我们可以发现,在计算机中,使用正数的补码形式来替代负数,可以极大地简化减法的运算过程。计算机的硬件设计也因此得到了优化。
在计算机系统中,所有的数值都采用补码的形式进行表示和存储。原码和反码这两种形式,在计算机中并不存在,也没有实际的应用价值。
那么,什么是补码呢?为什么我们要使用补码呢?通过上面的介绍,相信你已经找到了答案。原码和反码的存在,只是为了求补码的过渡而已,它们本身并没有实际的意义。实际上,原码和反码,还有“取反加一”的概念,都是多余的,学习这些会浪费我们宝贵的时间,却不能真正理解补码的实际应用价值。
特别是当我们尝试用“取反加一”的方式求 0和-128的补码时,我们会发现这种方法是无法实现的。因为-128的补码存在,但原码和反码并不存在,我们无法对其进行取反加一的操作。而0的补码是 0000 0000,符号位居然是 0,这难道意味着负零是正数吗?
有观点认为,零不分正负,因此只有一个补码。那么,原码和反码为什么要有两个零呢?实际上,原码和反码中的取反加一理论,存在大量的自相矛盾的谬误。这也从侧面反映出,某些国外计算机理论也存在逻辑上的缺陷。