本文主要内容来源于Java核心技术卷一
概念
位运算指的是对二进制进行的计算处理。主要有 与(&)、或(|)、异或(^)、求反(~)
其特征为:“都是1的时候才是1”
如:
13 & 7 =
计算过程为:
13的二进制:1101
7的二进制: 0111
得到结果 0101 转换成10进制则是5
-
###或运算
其特征为:“有一位是1结果就是1”13 | 7
计算过程为
1101
0111
按照或运算得到结果是
1111
转化成10进制为:15
-
###移位运算
向左移位:<<
向右移位:>>
表示二进制数向左或者向右移位
例如int x = 2;
int result = x << 2;
System.out.println(result);//8
计算结果过程如下
2的二进制为 0010
向左移位2则为 1000 ,转换成10进制则得到结果为8。
进制之间的转换
参考http://c.biancheng.net/view/1725.html
面试题
&、| 和 &&、||有什么区别?
答:
1.都可以做逻辑运算符,做逻辑运损符时,&和|的所有条件都需要执行,而&&和或的并不是所有条件都需要进行判断。例如 11 || 22 || 33 此时 11执行完毕后则不会再进行后续判断,而 11 | 22 | 3==3 则需要将所有条件都执行。
2.|和&可以做位运算符,对数据进行二进制计算。