位运算符:与、或、异或、取反、左移和右移

位运算符是按照二进制进行运算。

& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1

^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1

~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0

<< 左移 用来将一个数的各二进制位全部左移N位,右补0

>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0

1. 按位与 &

  • 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
  • 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
  • 例如:3|5 即 0011 & 0101 = 0001

2. 按位或 |

  • 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
  • 两个相应的二进制位中只要有一个为1,该位的结果值为1
  • 例如:3|5 即 0011 | 0101 = 0111

3. 异或 ^

  • 运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
  • 参加运算的两个二进制位值相同则为0,否则为1(不进位加法)
  • 与0相异或,保留原值
  • 交换a和b的值
    • a=a^b
    • b=b^a
    • a=a^b
  • 例如:3|5 即 0011 ^ 0101 = 0110

4. 取反 ~

  • 运算规则:~1=0; ~0=1;
  • 即将0变1,将1变0
  • 例如:3 即 ~0011 = 1100

5. 左移 <<

  • 将一个数的各二进制位全部左移N位,右补0
  • 例如:3 即 0011<< =0110

6. 右移 >>

  • 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
  • 例如:3 即 0011 >> = 0001

你可能感兴趣的:(位运算符:与、或、异或、取反、左移和右移)