1.一元操作符
非运算
~ 是按位非运算,将操作数对应的二进制数的每一位(包括符号位)取反,即 1 变 0 , 0 变 1 。
注意:在内存中,数值都是以二进制补码形式保存的,所以在读出的时候,都会执行一步操作:补码变原码(符号位不变,剩余位取反 +1)。
代码示例:
package test;
public class Test {
public static void main(String[] args) {
int a = 10;
System.out.println("十进制数 10 的二进制表示为 : " + Integer.toBinaryString(a));
System.out.println("按位非运算后,内存中的结果为 : " + Integer.toBinaryString(~a));
System.out.println("从内存中读出的结果为 : " + ~a);
}
}
输出结果:
2.二元操作符
算术运算
位运算
操作符 | 描述 | 示例 |
& | 按位与,两位同时为 1 才返回 1 | 00101010 & 00001111 = 00001010 |
| | 按位或,两位之中有一位为 1 就返回 1 | 00101010 | 00001111 = 00101111 |
^ | 按位异或,两位相同返回 0,不相同返回 1 | 00101010 ^ 00001111 = 00100101 |
<< | 左移,N<<S 表示将 N 左移 S 位,空位填 0 | 11111000<<1 = 11110000 |
>> |
右移,N>>S 表示将 N 右移 S 位, 若为正数,空位填 0;若为负数,空位填 1 |
11111000>>1 = 11111100 |
>>> | 无符号右移,无论正数还是负数,空位都填 0 | 11111000>>>1 = 01111100 |
逻辑运算
在逻辑运算中,为了提高运行效率,Java 提供了“短路运算”功能:
原文:https://www.cnblogs.com/bjxqmy/p/13264623.html