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,即00001100
|
|(按位或)
| 如果任一操作数中存在二进制或运算符,则会对其进行复制。
| (A|B)将得出61,即00111101
|
^(按位XOR)
| 如果在一个操作数中设置了该位,但不是在两个操作数中都设置了位,则二进制XOR运算符将复制该位。
| (A^B)将得出49即00110001
|
〜(按位赞美)
| 二进制补码运算符是一元的,具有“翻转”位的作用。
| (〜A)将给出2的补码形式的-61,即11000011,这是由于带符号的二进制数。
|
<<(左移)
| 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。
| <<2将得到240,即11110000
|
>>(右移)
| 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。
| A>>2将得到15等于1111
|
>>>(零填充右移)
| 右移零填充运算符。左操作数的值向右移动右操作数指定的位数,并且移位后的值用零填充。
| A>>>2将得到15,即00001111
|