位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设 a = 60,b = 13; 它们的二进制格式表示将如下:

  1. A = 0011 1100
  2. B = 0000 1101
  3. -----------------
  4. A & B = 0000 1100
  5. A | B = 0011 1101
  6. A ^ B = 0011 0001
  7. ~A = 1100 0011

下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:

操作符 描述 例子
如果相对应位都是 1,则结果为 1,否则为 0 (A&B)得到 12,即0000 1100
| 如果相对应位都是 0,则结果为 0,否则为 1 (A | B)得到 61,即 0011 1101
^ 如果相对应位值相同,则结果为0,否则为 1 (A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即 0 变成 1,1 变成 0。 (〜A) 得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2 得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2 得到15,即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2 得到15,即0000 1111