目录

Java 位运算

基本操作

<< 左移

>> 右移

>>> 无符号右移

& 位与

| 位或

^ 位异或

~ 位非

通过 Java int 来举例

代码输出结果查看

左移操作

1
2
3
4
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
左移2位的结果 的二进制        : 0000 0000 0000 0000 0000 0000 0001 0100
-5 的二进制                 : 1111 1111 1111 1111 1111 1111 1111 1011
左移2位的结果 的二进制        : 1111 1111 1111 1111 1111 1111 1110 1100

右移操作

1
2
3
4
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
右移2位的结果 的二进制        : 0000 0000 0000 0000 0000 0000 0000 0001
-5 的二进制                 : 1111 1111 1111 1111 1111 1111 1111 1011
右移2位的结果 的二进制        : 1111 1111 1111 1111 1111 1111 1111 1110

无符号右移

1
2
3
4
5
---
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
无符号右移2位的结果 的二进制   : 0000 0000 0000 0000 0000 0000 0000 0001
-5 的二进制                 : 1111 1111 1111 1111 1111 1111 1111 1011
无符号右移2位的结果 的二进制   : 0011 1111 1111 1111 1111 1111 1111 1110

按位与

1
2
3
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
7 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0111
5 & 7 = 的二进制            : 0000 0000 0000 0000 0000 0000 0000 0101

按位或

1
2
3
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
7 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0111
5 | 7 = 的二进制            : 0000 0000 0000 0000 0000 0000 0000 0111

按位异或

1
2
3
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
7 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0111
5 ^ 7 = 的二进制            : 0000 0000 0000 0000 0000 0000 0000 0010

按位非

1
2
5 的二进制                  : 0000 0000 0000 0000 0000 0000 0000 0101
~5的二进制                  : 1111 1111 1111 1111 1111 1111 1111 1010

代码

点击链接跳转GitHub查看

需要注意的点

无符号右移无论正负数,高位都会补零。 有符号右移会根据本身的正负数来进行填充。