位运算符
运算符 | 运算 | 范例 |
---|---|---|
<< | 左移 | 3 << 2 --> 3x2x2=12 |
>> | 右移 | 3 >> 2 = 1 --> 3/2=1 |
>>> | 无符号右移 | 3 >>> 1 --> 3/2=1 |
& | 与运算 | 6 & 3 = 2 |
| | 或运算 | 6 | 3 = 7 |
^ | 异或运算 | 6 ^ 3 = 5 |
~ | 反码 | -6 = -7 |
小贴士:
位运算符是直接对二进制进行运算
<< 相当于乘与2的倍数
而>>相当于除以2的倍数
移n位,就是对乘以或除以2的n次幂。
下面是例子的计算过程,位运算符就是直接对二进制进行运算,所以把数转换成二进制直观的去观察;
有一道题是这样的:
数组中,只有一个数出现一次,剩下都出现两次,找出出现一次的数;
这里可以用^来解决。
异或符号的特点:一个数异或另一个数两次,结果还是这个数;
public static void main(String[] args) {
int[] ace = {5,3,3,5,2,6,9,9,6};
int t=0;
for (int i = 0; i < ace.length; i++) {
t^=ace[i];
}
System.out.println(t);
}
&与运算:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
&运算:当左右两边都为true时,结果是true,否则结果是false。
| 或运算:
true | true = true;
true | false = true ;
false | true = true;
false | false = false;
|运算: 左右两边只要有一个为true, 结果是true,两边都为false时,结果为false。
^异或符号:
true ^ true = false;
true ^ false = true ;
false ^ true = true;
false ^ false = false;
^ 运算 :两边都相同,结果是false.两边不同结果是true.
作者的话:
整理的不是太好,看着有些乱,但是呢,学习就是从不会到会的过程,只有动手去做,去输入输出,总会变得更好的,欢迎大家一起交流探讨哦!