操作符 | 描述 | 运算规则 |
---|---|---|
& | 位与 | 如果相对应位都是1,则结果为1,否则为0 |
| | 位或 | 如果相对应位都是 0,则结果为 0,否则为 1 |
^ | 位异或 | 如果相对应位值相同,则结果为0,否则为1 |
〜 | 位非 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< | 左移 | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 右移 | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 无符号右移 | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
- 左移
<<n
: 乘以2的n次方
- 右移
>>n
:除以2的n次方,取整数部分。
- 位非
1位: | ~1 = 0; | |
---|---|---|
2位 | ~01 = 10 = -1 | ~10 = 01 = 1 |
3位 | ~001 = 110 = -1 | ~010 = 101 = -3 |
4位 | ~0001 = 1110 = -1 | ~0010 = 1101 = -3 |
x的位非结果为:-x-1
- 输出偶数
for (int i = 0; i < 10; i++) {
System.out.println(i & ~1);
}
//输出: 0 0 2 2 4 4 6 6 8 8
- & 判断奇数偶数
for (int i = 0; i < 10; i++) {
System.out.println(i & 1);
}
//输出:0 1 0 1 0 1
可以用if ((a & 1) == 0) 代替 if (a % 2 == 0)来判断a是不是偶数。
网友评论