Java教程 - Java按位运算符
按位操作符作用于其操作数的各个位。Java按位运算符可以应用于整数types:long,int,short,char,byte。
按位运算符列表
下表列出了所有Java按位运算符。运算符 结果~ 按位一元NOT
& 按位AND
| 按位或
^ 按位异或
>> 向右移动
>>> 右移零填充
<< 向左移动
&= 按位AND分配
|= 按位OR分配
^= 按位异OR分配
>>= 右移赋值
>>>=右移零填充分配
<<= 向左移位
按位运算符分配将赋值与按位运算组合。以下两个语句是等效的:a = a >> 4;
a >>= 4;
以下两个语句是等效的:a = a | b;
a |= b;
以下程序演示了按位运算符分配:public class Main {
public static void main(String args[]) {
int a = 1;
int b = 2;
int c = 3;
a |= 2;
b >>= 2;
c <<= 2;
a ^= c;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
}
此程序的输出如下所示:
Java左移运算符
左移位算子,<
它有这种一般形式:value << num
以下代码移位字节类型变量。public class Main {
public static void main(String args[]) {
byte a = 64, b;
int i;
i = a << 2;
b = (byte) (a << 2);
System.out.println("Original value of a: " + a);
System.out.println("i and b: " + i + " " + b);
}
}
此程序生成的输出如下所示:
例子
每个左移具有使原始值加倍的效果。以下程序说明了这一点:public class Main {
public static void main(String args[]) {
int num = 0xFFFFFFF;
for (int i = 0; i < 4; i++) {
num = num << 1;
System.out.println(num);
}
}
}
程序生成以下输出:
Java右移运算符
右移位运算符>>将值中的所有位向右移a指定次数。
其一般形式如下所示:value >> num
num指定要向右移位的位置数。
以下代码段将值32向右移两个位置:public class Main {
public static void main(String[] argv) {
int a = 32;
a = a >> 2;
System.out.println("a is " + a);
}
}
输出:
Java无符号右移
Java无符号,右移运算符,>>>,始终将零转移到高阶位。
其一般形式如下所示:value >>> num
num指定要向右移位的位置数。
以下代码显示如何使用无符号右移。public class Main {
public static void main(String[] argv) {
int a = -1;
a = a >>> 24;
System.out.println("a is " + a);
}
}
输出: