一、正数的原码反码补码到底是不是一样的?

C语言里正数的原码反码补码是一样的。

符号位是0,原码,反码,补码:00001010;

补码是为负数想出来的办法,目的是减法可以用加补码的方法实现。补码可用反码加1得来,于是又有了负数的反码。

计算机里有硬件“加法器”,有了补码,减法也可以用加法器做了。计算机里运算速度,硬件远快于软件,这是做出反码,补码和原码的原因。

扩展资料

1、原码的优点

正数的补码-正数的原码反码补码到底是不是一样的?

简单直观,例如:用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011;

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中。

2、原码的缺点

例:00000001+10000001=10000010,换算成十进制为-2。显然出错了。

所以原码的符号位不能直接参与运算,必须和其他位分开,这就增加了硬件的开销和复杂性。

参考资料来源:百度百科—反码

二、对于正数,其原码、反码、补码是相同的吗

是的,对于正数来说,其二进制原码,反码,补码均为相同的,为原码的形式;对于负数来说,其反码为符号位保持不变,其余各位取反,其反码为符号位保持不变,其余各位取反后再在最后一位上加1.例如:十进制数+18=二进制数01001...