首先我们需要知道计算机存储数据是以补码的形式存储的,正数的码首位都是0,负数的码首位都是1
正数的原码、反码和补码是一样的
例如7的原码: 00000111
反码:00000111
补码:00000111
负数的原码、反码和补码是不一样
例如-7的原码是:10000111
负数的反码是首位不变,其他位取反 ,1取反是0,反之
所以-7的反码:11111000
负数的补码等于反码+1
-7的补码:11111001
我们常见的位运算,就是对存储在计算中的补码进行的,用补码进行位运算,结果以原码的形式输出
例如 -7&7 = 00000111 &
11111001
结果是00000001, 也就是1
那么 -7|7 = 00000111 |
11111001
结果是11111111
很明显这是一个负数
所以要得到他的原码 必须-1 得到反码
也就是11111110
再反码基础上,以首位不变,其他取反,可以得到 10000001
这样我们就得到结果的原码了
首位1代表负数
所以结果是-1