(1)正数的补码:与原码相同。
(2)好肆做负数的补码:符号位为1,其余位为该数绝对值的原码按位友衡取反;然后整个数加1。雹雀
想要了解补码,还得从小学说起。
大概是在小学二年级吧,就学过进位了芦派慎。
两位十进制数是:0 ~ 99。
那么有:27 + 99 = (一百) 26
也可以:27 - 1 = 26
如果你忽略进位,依然保持两位数,这两种算法的功能,就是完全相同的。
如果在计算机中舍弃进位:
● 负数,就能用正数(即补码)代替;
● 用加法,也就实现了减法运算。
所谓的补码,就是一个【代替负数的正数】。
补码的来源,就是【舍弃进位】!
----------
在两位十进制数时,舍弃进位,就是减去一百。
因此,+99、-100,当然就陪敬是-1 了。
·
八位二进制数:0000 0000 ~ 1111 1111。
也就是十进制:0 ~ 255。
如果出现进位:2^8 = 256。
此时,+255 (1111 1111)、再舍弃进位,也就是-1 了。
同理,+254 (1111 1110),也就是-2。
。。。
以上这些正数,就羡码“计算机专家发明的补码”了。
你说可笑不?
而原本就是正数,当然就不用再用别的正数来代替了。
也可以说:零和正数的补码,就是它自己。
----------
补码的来源:就是【舍弃进位】!
所谓的:机器数真值符号位原码反码取反加一,都是忽悠!
从外形来看,二进制数和二进制补码,是完全相同的,没有任何区别。
但是,采用不同的算法,就有不同的效果。
比如一个算式: 0010 + 1111 = (1) 0001。
你如果保留进位,这算式就是:2 + 15 = 17。
式中的 0010、1111,都是一般的二进制数。
你如果舍弃进位,这算式就是:2 + (-1) = 1。
启明 虚斗式中的 0010、1111,就都是二差旁磨进制补码。