计算机是二进制运行的机器,一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.二进制有三种表现形式,原码、反码和补码。
1.正数
正数的原码、补码和反码均与真实值是相同的。
2.负数
负数的原码与真实值相同,反码:在原码的基础上符号位不变,其余各位取反。补码:在反码的基础上最后一位加1.
3 计算机为何会诞生反码和补码
我们通过实际的例子来说明1-1=0,可以看做1+(-1)=0,计算机也是如此运行减法运算的。此时反码就体现了作用;
eg1:原码 0000 0001 + 1000 0001 =1000 0010 (十进制为-2)
此处明显错误,因此如果计算机采用原码进行计算,必先区分符号位,而后再计算。我们再看看反码的运算模式,
eg2: 0000 0001 + 1111 1110 =1111 1111 则原码为1000 0000(十进制为-0)
因此计算机采用反码相对原码计算更准确
反码的缺陷:回到eg2: 0000 0000(十进制为-0),计算机如果采用反码会产生两个0分别是+0 和-0,不符合逻辑,因此补码就诞生了
eg3:0000 0001 + 1111 1111=0000 0000 则原码为 0000 0000(十进制为+0)
总结:计算机采用原码做减法有劣势,采用反码不能区分+0 和-0 ,因此补码最完美,但操作复杂。