一、正数的原码反码补码到底是不是一样的?
C语言里正数的原码反码补码是一样的。
符号位是0,原码,反码,补码:00001010;
补码是为负数想出来的办法,目的是减法可以用加补码的方法实现。补码可用反码加1得来,于是又有了负数的反码。
计算机里有硬件“加法器”,有了补码,减法也可以用加法器做了。计算机里运算速度,硬件远快于软件,这是做出反码,补码和原码的原因。
扩展资料
1、原码的优点
简单直观,例如:用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011;
原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中。
2、原码的缺点
例:00000001+10000001=10000010,换算成十进制为-2。显然出错了。
所以原码的符号位不能直接参与运算,必须和其他位分开,这就增加了硬件的开销和复杂性。
参考资料来源:百度百科—反码
二、对于正数,其原码、反码、补码是相同的吗
是的,对于正数来说,其二进制原码,反码,补码均为相同的,为原码的形式;对于负数来说,其反码为符号位保持不变,其余各位取反,其反码为符号位保持不变,其余各位取反后再在最后一位上加1.例如:十进制数+18=二进制数01001...