提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
在计算机中,数字的存储与计算通常采用二进制进行。十进制数转换为二进制就是原码。为了方便计算机的计算又在原码的基础上引入了反码和补码的概念。
一、原码、补码与反码
原码:十进制对应的二进制就是原码。
示例:十进制:10;原码:1010。
在计算机中基本运算是加法运算(减法就是加负数)。
计算机中有符号位通常最高位为符号位(0正,1负)。
两个正数相加就是直接相加,例如
0 000 1010
+ 0 000 1010
————————————
0 001 0100
即:10+10 = 20
因为正数可以直接用原码进行计算,所以正数不需要反码和补码。但为了保持一致,令其反码、补码与原码保持一致。
负数与负数相加
1 000 1010
+ 0 000 1010
————————————
1 001 0100
即:-10+ 10 = -20
错误!
反码:负数的反码是符号位保持不变,其余位取反。正数的反码与原码一致。
-10 反码 1 111 0101
1 111 0101
+ 0 000 1010
————————————
1 111 1111
1 111 1111 的原码为 1 000 0000
即:-10+10 = -0 = 0
正确!
1 111 0101
+ 1 111 0101
————————————
1 110 1010
1 110 1010 的原码为 1 001 0101
即:-10 + (-10) = -21
错误!
补码:负数的补码等于其反码 +1。正数的补码与原码一致。
-10 补码 1 111 0110
1 111 0110
+ 0 000 1010
————————————
0 000 0000
0 000 0000 的原码为 0 000 0000
即:-10+10 = 0
正确!
1 111 0110
+ 1 111 0110
————————————
1 110 1100
1 110 1100 的原码为 1 001 0100
即:-10+(-10) = -20
正确!
二、总结
计算机中为了计算方便通常都以补码的方式进行存储和计算整数。
正数的原码、补码与反码都是其二进制形式本身(最高位为符号位:0)。
负数的原码为其二进制本身;反码为符号位不变其它位取反;补码为反码加1(最高位为符号位:1)。