前言:计算机是用补码进行计算与存储

  1. 对于有符号数而言,二进制的最高位是符号位 ,0表示正数, 1表示负数;

  2. 正数的原码、反码、补码都一样;

  3. 负数的原码是其正数符号位为1,其他位和正数的二进制位相同;负数的反码等于负数原码符号位不变,其他位按位取反;负数的补码等于负数的反码+1;

  4. go中的取反操作^,c、java、c++中取反操作~

  5. 按位与 &运算,两个全为1,结果为1,否则为0;

  6. 按位或运算,一个为1就为1;

  7. 按位异或^运算,两个不同,结果为1 ,相同则为0;

  8. 左移运算<<,符号位不变,低位补 0;

  9. 右移运算>>,低位溢出,符号位不变,并用符号位补溢出的高位;

  10. go中位清除&^