上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.4 位运算
位运算允许对整数中的单个比特进行操作。位运算符会对两个操作数中的对应比特位执行布尔代数运算,并产生一个结果。Java中有三种位运算符。
· “&”(与):如果二者的对应位都是1,则结果为1,否则为0。
· “|”(或):如果二者的对应位都是0,则结果为0,否则为1。
· “^”(异或):如果二者的对应位值相同,则结果为0,否则为1。
· “~”(非):将被操作数按位取反。
提示:实际上“&”、“|”运算符在Java中也被重载了,既表示逻辑运算,又表示位运算。同时,位运算与前面介绍的算术运算一样也具有类型自动提升功能。也就是说,经过位运算的结果至少是int型。
表3.1给出了前三种运算的真值表。
表3.1 真值表
下面通过一个例子来说明按位运算的过程,请读者按如下步骤操作。
(1)将两个数字分别转换为二进制表示。例如12和2分别表示为二进制的1100和0010。
(2)将两个数字的二进制数按图3-14所示的方式进行按位“|”运算。
图3-14 按位“|”运算。
(3)最终结果为1110,对应的十进制值为14。
请读者用如下代码验证结果。
1 //代码实现 2 public class Sample3_10 3 { 4 public static void main(String args[]) 5 { 6 int a=12|2; //1100|0010 7 System.out.println(a); //打印结果 8 } 9 }
编译运行后,其结果如图3-15所示。
提示:“&”、“^”的运算过程与上述“|”的运算过程非常相似,有兴趣的读者可按照如上步骤自行练习、对比。