简单介绍Java中的逻辑运算与位运算
逻辑运算
逻辑运算符:!、&&、||
优先级:!>&&>||
逻辑运算符的使用方法:
| op1 | op2 | op1&&op2 | op1||op2 | !op1 |
| true | true | true | true | false |
| true | false | false | true | false |
| false | true | false | true | true |
| false | false | false | false | true |
位运算
位运算符:
| 运算符 | 用法 | 含义 | 规则 |
| & | op1&op2 | 按位与 | 全1则1,否则为0 |
| | | op1|op2 | 按位非 | 全0则0,否则为1 |
| ^ | op1^op2 | 按位异或 | 相同为1,不同为0 |
| ~ | ~op1 | 按位非 | 遇1则0,遇0则1 |
| << | op1<< x | 左移运算符 | x为左移的位数 |
| >> | op1>> x | 右移运算符 | x为右移的位数 |
使用位运算符运算的方式是对二进制进行按位运算的,比如:
a,b要进行“按位与”运算,先转化为二进制,计算结果是相同位上只有都为1时才为1,否则为0。
注意:
按位异或运算是可逆的,即如果对某个数据a进行两次相同的异或运算,则结果会还原为a,如对数值3进行两次和5的异或运算
3^5=6; 6^5=3
单从符号和含义上可以感觉到逻辑运算与位运算有很多相似的地方,下面说说两者的区别:
逻辑运算与位运算的区别
1.逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
2.逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。
比如: