位运算符
位运算符是针对二进制的每一位进行运算的符号,它是专门针对0和1进行新操作的。
运算符 | 运算 | 范例 | 结果 |
& | 按位与 (都为1为1) | 0&0 | 0 |
0&1 | 0 | ||
1&0 | 0 | ||
1&1 | 1 | ||
| | 按位或 (有1为1) | 0|0 | 0 |
0|1 | 1 | ||
1|0 | 1 | ||
1|1 | 1 | ||
^ | 按位异或 (不同为1) | 0^0 | 0 |
0^1 | 1 | ||
1^0 | 1 | ||
1^1 | 0 | ||
~ | 取反 | ~0 | 1 |
~1 | 0 | ||
<< | 左移 | (正数)0000 0010<<2 | 0000 1000 |
(负数)1001 0011<<2 | 0100 1100 | ||
>> | 右移 | 0110 0010>>2 | 0001 1000 |
1110 0010>>2 | 1111 1000 | ||
>>> | 无符号右移 | 0110 0010>>>2 | 0001 1000 |
11...1110 0010>>>2 | 0011...11 1000 |
目录
位运算符&
位运算符&是将参与运算的两个二进制数进行与运算,如果两个二进制位都为1,则该位的运算结果为1,否则为0。
例 :
位运算符|
位运算符&是将参与运算的两个二进制数进行或运算,如果二进制位上有一个值为1,则该位的运行结果为1,否则为0。
例:
位运算符^
位运算符^是将参与运算的两个二进制数进行异或运算,如果二进制位相同,则值为0,否则为1。
例:
位运算符~
位运算符~只针对一个操作数进行操作,如果二进制位是0,则取反值1;如果二进制位是1,则取反值0。
例:
位运算符<<
位运算符<<就是将操作数所有二进制位向左移动一位。运算时,右边的空位补0,左边移走的部分舍去。
例:
面试题:4x8最快的方式——4<<3。
位运算符>>——有符号右移
位运算符>>就是将操作数所有二进制位向右移动一位。运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0)。
例:
位运算符>>>——无符号右移
位运算符>>>就是将操作数所有二进制位向右移动一位。运算时,左边的空位补0(不考虑原数的正负数)。
例:
public class FuShu { public static void main(String[] args) { System.out.println(Integer.toBinaryString(-6)); int m=-6; m=m>>>2; System.out.println(Integer.toBinaryString(m)); System.out.println(m); } }
运行结果: