对于刚接触编程语言的群体来说,或许对 原码,反码,补码的概念跟模糊,下面我们简单介绍下。
写在前面: 对于有符号类型的数,最高位决定这个数的正负,最高位为0,代表正数,最高位为1,代表负数,
例如:-5 : 1000 0101
+5 : 0000 0101
原码: 简单点,就是一个数的二进制形式,例如 十进制数字 9,原码就是:0000 1001 ;-9 时 原码就是:1000 1001
反码:正数和负数的反码是有区别的 ,对于正数 反码和原码相同,9的反码还是是 0000 1001,对于负数,就是将二进制的 1变成0 ,0变成1,(符号位不变) 如, -9的反码就是 11111 0110
补码:正数和负数的补码是有区别的 ,对于正数 补码码和原码相同 即9的补码还是0000 1001 ,对于负数 反码 + 1 就是补码 -9的补码就是 1111 0111。
总结:对于有符号数,正数的原码,反码和补码是一样的,对于负数,反码就是将 原码除符号位外 的所有位取反,即0变1,1变0.
补码就是在反码的基础上+1.