参考文章:https://blog.csdn.net/zl10086111/article/details/80907428

一、机器数和真值
在学习原码、反码、补码之前,首先要明白机器数和真值的概念。
- 一个数在计算机中的二进制形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1。比如,十进制中的 +3,转换为八位二进制为00000011;如果是 -3,就是10000011。
- 因为机器数的第一位是符号位,所以机器数的形式值就不一定等于真正的数值。例如上面的10000011,其最高位1代表负数,其真正数值是-3,而不是131。所以,为了区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

二、原码、反码、补码的概念和计算方法
1. 原码:原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。例如:
+1 的原码就是 0000 0001
-1 的原码就是 1000 0001
原码中,第一位是符号位,所以8位二进制数的取值范围为:[1111 1111, 0111 1111[,即[-127, 127]。

2. 反码:反码的表示方法根据正负数进行区分,其中:
- 正数的反码就是其本身,例如+1的原码是 0000 0001,反码是 0000 0001。
- 负数的反码就是在原码的基础上,符号位不变,其余各位取反。例如,-1 的原码是1000 0001,则反码就是 1111 1110。

3. 补码:补码的表示方法根据正负数进行区分,其中:
- 正数的补码就是其本身,例如,+1的原码是 0000 0001,反码是 0000 0001,补码是 0000 0001。
- 负数的补码是在其源码的基础上,符号位不变,其余各位取反,最后 + 1。例如,1000 0001,反码是 1111 1110,补码是 1111 1111。

其实,通过概念我们可以看出:
- 正数的原码、反码、补码就是其本身;
- 负数的原码、反码、补码是完全不同的。
2020-08-12
在牛客打卡12天,今天学习:刷题 1 道/代码提交 4 次
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务