题记
计算机存储数值方式是通过原码,反码,补码来编码的。突然写这个原码 反码 补码 感觉很奇怪。
由于今天开始补习一下面试的知识,做了一套阿里巴巴的面试题,第一道题就是问关于求-7的补码。查阅资料后,我觉得有必要写下来,以后就不会忘记。
基础知识
原码
原码是计算机和人最容易理解的表达。原码是符号位和真实值的绝对值来表示的。对于一个二进制数来说,原码的第一位是符号位,其余部分位表示是数值。我拿-7的8位二进制举例说:
-7 的二进制10000111,那么-7的原码就是10000111。
反码
- 正数的反码就是其本身
- 负数的反码就是保持符号位不变,数值位的1变为0,0变为1(1-->0 ,0-->1)
我还是那7和-7来举例。
7 的原码是00000111。7的反码就是 00000111
-7的原码是10000111。-7的反码就是11111000
补码
- 正数的补码也是其本身
- 负数的补码是:在原码的基础上,保持符号位不变,数值位取反再加1。
7 的补码是00000111,-7的补码是11111001。
总结
正数的原码,反码,补码是一样的。
负数的原码,反码,补码都一样,但是符号位都是一样,反码和补码的区别在于补码在最后一位多加1。