Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(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:
操作符 | 描述 | 例子 |
---|---|---|
& | 按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。 | (A&B),得到12,即0000 1100 |
| | 按位或操作符,只要两个操作数的某一位有一个非0时候结果的该位就为1。 | (A | B)得到61,即 0011 1101 |
^ | 按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位补运算符翻转操作数的每一位。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |