课时21:位运算
位运算指的是可以直接进行二进制数据的计算处理,主要有:与(&)、或(|)、异或(^)、反码(~)、移位处理。
如果要想理解位操作,则一定要清楚十进制与二进制之间的转换处理逻辑:数字除2取余。比如:数字13求二进制,过程如下:
范例:观察与操作,如果两位都是1结果才是1,有一位是0结果就是0。
public class JavaDemo { public static void main(string args[]) { int x=13; int y=7; system.out.println(x & y); } }
计算结果:5
13的二进制:00000000 00000000 00000000 00001101
7的二进制: 00000000 00000000 00000000 00000111
&计算: 00000000 00000000 00000000 00000101 → 5
范例:观察或运算,有一位是1结果就是1,两位都是0的时候结果才是0。
public class JavaDemo { public static void main(string args[]) { int x=13; int y=7; system.out.println(x | y); } }
计算结果:15
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
2的二进制:00000000 00000000 00000000 00000010;
向左移2位:00000000 00000000 00000000 00001000;→8
最初,提升计算性能可以通过位操作实现,许多程序已经为你准备好了位操作库。还有一些操作可以通过更简单的方式完成,而且现在的内存容量也更大。即使你写的程序再差,性能也不会差到哪里去,因为现在的内存不再是按 K (千字节)销售,而是按 G (吉字节)甚至 T (太字节)销售了。
面试题:请解释&和&&、|和||的区别?
(1)&和|两个运算符可以进行位运算与逻辑运算;
|-在进行逻辑运算的时候所有的判断条件都要执行;
|-在进行位运算的时候只是针对于当前的数据进行&和|处理;
(2)在逻辑运算上还可以使用&&、||;
|-&&:在若干个条件判断的时候,如果前面的条件返回了false,后续所有的条件都不再判断,最终的结果就是false;
|-||:在若干个条件判断的时候,如果前面的条件返回了true,后续条件不再执行,最终就是true。