Java定义了几个按位运算符,它们可以应用于整数类型long,int,short,char和byte。
按位运算符对位进行运算并执行逐位操作。假设a = 60和b = 13; 现在以二进制格式,它们将如下所示-
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
下表列出了按位运算符-
假设整数变量A保持60并且变量B保持13然后-
运算符 | 描述 | 例 |
---|---|---|
&(按位与) | 如果两个操作数中都存在二进制AND运算符,则会将一位复制到结果中。 | (A&B)将给出12,即0000 1100 |
| (按位或) | 如果任一操作数中存在二进制或运算符,则会对其进行复制。 | (A | B)将得出61,即0011 1101 |
^(按位XOR) | 如果在一个操作数中设置了该位,但不是在两个操作数中都设置了位,则二进制XOR运算符将复制该位。 | (A ^ B)将得出49即0011 0001 |
〜(按位赞美) | 二进制补码运算符是一元的,具有“翻转”位的作用。 | (〜A)将给出2的补码形式的-61,即1100 0011,这是由于带符号的二进制数。 |
<<(左移) | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | << 2将得到240,即1111 0000 |
>>(右移) | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2将得到15等于1111 |
>>>(零填充右移) | 右移零填充运算符。左操作数的值向右移动右操作数指定的位数,并且移位后的值用零填充。 | A >>> 2将得到15,即0000 1111 |