计算机的所有整数都是以补码的形式存储在计算机中的。整数的补码就是它本身;负数的补码是它除了符号位的位数取反加一。
正数的补码等于原码,负数的原码等于反码加一,而反码等于原码符号位不变其余各位取反
使用补码的原因:简化计算机基本运行电路,使加减法都能用加法的运行电路实现,用加法替代减法也就是让减去一个正数或加上一个负数可以用加上一个正数来替代。于是改变负数的存储形式,存储成可以直接当成正数来相加的形式,这种形式就是补码。
补码是怎么把减法变成加法的?
用时钟理解减法变加法
这是一个身边的例子,当你校对时钟的时候,假设发现钟是6点,但实际上现在才2点,也就是它走快了4个小时,你可以有两种方法进行校正,一种是逆时针拨回4个小时到2点,另一种是顺时针拨6个小时到12点然后再拨2小时,也就是顺时针拨8个小时到2点。所以对于时钟的表盘来说,设-N表示逆时针拨N个小时,N表示顺时针拨动N个小时,那么-4 = +8,同样还会有 -1 = +11、-5 = +7,甚至也可以 -4 = +8 = +20 = +32 = -16…
这里边隐藏了什么规律?其实在数学中,-4、+8、+20、+32、-16可以归为符合某个条件的同一类数字 —— 对于模12同余。(这不是反码吗?)
所以,只要 补码 是一个负数的正同余数,那么就能实现加这个正同余补码跟加另一个负数是一样结果的效果。对一个负数来说,有无数个正同余数满足条件,为了减少不必要的运算,可以规定补码就取其中最小的正数。
可能因为通过原码求 补码 是一个补模运算,所以它被称为 补码 。
版权声明:本文为优快云博主「SwordFirst」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/u011550549/article/details/94765612