首先,我们要了解原码、反码以及补码。

原码可以看做是一个二进制数,第一位表示符号,用“0”表示“+”,用“1”表示“-”,其余位表示数值。

反码可以看做是原码与补码之间的过渡码。正数的反码是其本身原码,负数的反码是在其原码的基础上,符号位不变,其余各位取反。

对于补码而言,正数的补码也是其本身原码,亦是其本身反码;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后再+1,也可以认为是在其反码的基础上,再+1。

总的来说,如果一个数是正数,则符号位为0,且它的原码、反码、补码相同;如果一个数是负数,则符号位为1,反码是其余各位取反,补码是反码+1。

根据上述描述,我们可以分别计算一下+0和-0的原码、反码、补码。(0带符号没有任何意义)(以4位二进制数为例)

真值原码反码补码
+0000000000000
-0100011110000

注意:1111+1=10000,取4位为0000。


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)