首先,我们要了解原码、反码以及补码。
原码可以看做是一个二进制数,第一位表示符号,用“0”表示“+”,用“1”表示“-”,其余位表示数值。
反码可以看做是原码与补码之间的过渡码。正数的反码是其本身原码,负数的反码是在其原码的基础上,符号位不变,其余各位取反。
对于补码而言,正数的补码也是其本身原码,亦是其本身反码;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后再+1,也可以认为是在其反码的基础上,再+1。
总的来说,如果一个数是正数,则符号位为0,且它的原码、反码、补码相同;如果一个数是负数,则符号位为1,反码是其余各位取反,补码是反码+1。
根据上述描述,我们可以分别计算一下+0和-0的原码、反码、补码。(0带符号没有任何意义)(以4位二进制数为例)
真值 | 原码 | 反码 | 补码 |
+0 | 0000 | 0000 | 0000 |
-0 | 1000 | 1111 | 0000 |
注意:1111+1=10000,取4位为0000。
本文固定URL:https://www.dotcpp.com/qa/43