Java开发手册
上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所示。

提示:“&”、“^”的运算过程与上述“|”的运算过程非常相似,有兴趣的读者可按照如上步骤自行练习、对比。