今天在看别人代码时候,发现用到位运算符巧妙的解决了问题,技巧性较强,看的我一脸懵逼,遂做整理。
先看看符号:
符号 | 含义 |
& | 都是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
综上,即为无聊的位运算知识点。其他同理