一,正数的最高位是符号位0,负数的最高位是符号位1。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
正数:反码=补码=原码。
负数:反码=除符号位以外的各位取反。
补码=反码+1. 原码==补码-1后的反码==补码的反码+1
二,数据在内存中都是以补码形式存在的,
把时针倒拨20分钟,和正拨40分钟,效果是相同的。
-20,就对应了 +40。
怎么算的?用 60 减去 -20 的绝对值,即可。
另外,100 以内的数字,减去1,和加上 99,效果也是相同的。
比如,27 - 1 = 26, 27 + 99 = (1) 26。
即 -1,就对应了 +99。
怎么算的?用 100 减去 -1 的绝对值,即可。
这些,就体现了“模”与“补数”的概念。
利用补数,就可把减法,转换成加法。如果是正数,直接做加法就行,不用费事。
对于负数,要用“模”减去这个负数的绝对值,求出“补数”之后再用于计算。
对于正数,就不用变了。
八位二进制数字的“模”是 1 0000 0000,即 256。
-5 的补数就是:256 - 5 = 251。把 5、251,都写成二进制数,这就称为了“码”,此时就可以看出它们有求反加一的关系。
即把 5 = 0000 0101,求反加一,就有:1111 1011,这就是 -5 的补码,这也就是 251。
总结
补码的设计目的就是:
1.使符号位能与有效值部分一起参加运算,从而简化运算规则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.
浙公网安备 33010602011771号