只有有符号数才有原码反码补码,其在内存中是以补码的形式存储, 无符号数在内存中是以二进制数的形式存储的!
正数的原码反码补码相同。
负数的原码首位是符号位,用1占这个位表示负数,其余位等于其绝对值数的原码(比如-8的源码是1000 1000,至于为啥是8位,因为计算机存储的最小单位是字节,1字节是8比特位)。
负数的反码等于除符号位外对其原码逐位取反。
负数的补码在其反码的基础上加1.
补码与原码的转换:
原码转补码:正数就不说了,负数符号位不变,其他位取反,之后加1.
补码转原码:符号位不变,其他位取反,之后加1,
关于-0怎么处理,见这篇文章https://blog.csdn.net/zy986718042/article/details/71699079#commentBox,写的很好。