首先我们需要知道计算机存储数据是以补码的形式存储的,正数的码首位都是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