位运算指的是可以直接进行二进制数据的计算处理,主要有:与(&)、或(|)、异或(^)、反码(~)、移位处理。如果先要理解位操作,则一定要清楚十进制与二进制之间的转换处理逻辑:数字除2取余。
13 → 00000000 00000000 00000000 00001101
÷ 2
…… 1
÷ 2
…… 0
÷ 2
…… 1
÷ 2
…… 1
范例:观察与操作,如果两位都是1结果才是1,有1位是0结果就是0
public class JavaDemo {
public static void main(String [] args){
int x = 13;
int y = 7;
System.out.println(x & y);
}
}
13的二进制:00000000 00000000 00000000 00001101
7的二进制: 00000000 00000000 00000000 00000111
&计算: 00000000 00000000 00000000 00000101 → 5
范例:观察或(|)运算,有1位是1结果就是1,2位都是0的时候结果才是0
public class JavaDemo {
public static void main(String [] args){
int x = 13;
int y = 7;
System.out.println(x | y);
}
}
13的二进制:00000000 00000000 00000000 00001101
7的二进制: 00000000 00000000 00000000 00000111
| 计算: 00000000 00000000 00000000 00001111 → 15
在进行位运算处理的时候还可以进行移位的计算。例如:以2的3次方计算为例。
范例:移位处理
public class JavaDemo {
public static void main(String [] args){
int x = 2;
System.out.println(x << 2);
System.out.println(x);
}
}
2的二进制: 00000000 00000000 00000000 00000010
向左移2位:00000000 00000000 00000000 00001000 → 8
面试题:请解释&和&&、|和||的区别?
· &和|两个运算符可以进行关系运算与逻辑运算:
|- 在进行逻辑运算的时候所有的判断条件都要执行;
|- 在进行位运算的时候只是针对于当前的数据进行与和或处理;
· 在逻辑运算上还可以使用&&、||;
|-&&:在若干个条件判断的时候,如果前面的条件返回了false,后续所有的条件都不再判断最终的结果就是false;
|-||: 在若干个条件判断的时候,如果前面的条件返回了true,后续条件不再执行,最终就是true;
网友评论