今天的课程内容
位运算符
位运算符有很多种,位运算实际上是将数字以二进制的形式直接参与一些不同于十进制的运算方式从而产生二进制值,最后又转化为一些十进制数的形式,在实际运算的时候如果正确采用位运算会使程序运行更加快速。
二进制的运算都是补码运算,运算时数字的符号位也会参与运算
运算符号 | 通常读法 | |
---|---|---|
^ | 按位异或 | |
& | 按位与 | |
| | 按位或 | |
~ | 按位取反 | |
>> | 按位右移 | |
<< | 按位左移 | |
>>> | 无符号位右移 |
按位异或(^)
^ | 1 | 0 |
---|---|---|
0 | 1 | 0 |
1 | 0 | 1 |
- 和逻辑判断相同,按位异或两个二进制数的时候,判断异或左右两边的符号是否相同,相同就是0,不同就是1.
- 0和任何数字进行^运算,得到的结果都是这个数字其本身
- 两个变量互相异或三次,就可以互相交换位置
图
按位与(&)
按位与(&) | 1 | 0 |
---|---|---|
1 | 1 | 0 |
0 | 0 | 0 |
- 一个数字如果按位与1,那么这个数字的最后一位(二进制表示时)就是1.
按位或(|)
按位或(|) | 0 | 1 |
---|---|---|
1 | 1 | 1 |
0 | 0 | 1 |
按位取反(~)
按位取反(~) | 0 | 1 |
---|---|---|
取反结果 | 1 | 0 |
按位左移(<<)
//按位左移
System.out.println(2<<3)