今天在看别人代码时候,发现用到位运算符巧妙的解决了问题,技巧性较强,看的我一脸懵逼,遂做整理。

先看看符号:

符号

含义

&

都是1,结果才是1

^

一个1一个0,结果是1

|

只要有1,结果是1

进行测试:

// 输出结果是0
System.out.println(0&1);
// 输出结果是1
System.out.println(1&1);
// 输出结果是0
System.out.println(2&1);
// 输出结果是1
System.out.println(3&1);

分析:

0&1:

      0 = 0000 0000 0000 0000 0000 0000 0000 0000
      1 = 0000 0000 0000 0000 0000 0000 0000 0001

结果  = 0000 0000 0000 0000 0000 0000 0000 0000 = 0

1&1:

      1 = 0000 0000 0000 0000 0000 0000 0000 0001
      1 = 0000 0000 0000 0000 0000 0000 0000 0001

结果  = 0000 0000 0000 0000 0000 0000 0000 0001 = 1

2&1:

      2 = 0000 0000 0000 0000 0000 0000 0000 0010
      1 = 0000 0000 0000 0000 0000 0000 0000 0001

结果  = 0000 0000 0000 0000 0000 0000 0000 0000 = 0

3&1:

      0 = 0000 0000 0000 0000 0000 0000 0000 0011
      1 = 0000 0000 0000 0000 0000 0000 0000 0001

结果  = 0000 0000 0000 0000 0000 0000 0000 0001 = 1

综上,即为无聊的位运算知识点。其他同理