www.jianshu.com/p/416dd46de…
// 位运算基础操作
//对于任意整数 a 和 b,以下表达式的结果均为 true,各位读者朋友可自行验证,真不骗你!
//注意以下几个操作之所以一一在这里特别列出,是因为它们对于位操作而言具有某种普遍意义,也就是说你最好能将它们牢记于心。
//至于它们有怎样的普遍意义,留给读者们自行思考,总之记住实践出真知!
a|0 == a;
a&-1 == a;
a&0 == 0;
a^a == 0;
a^0 == a;
a|~a == -1;
a&~a == 0;
a&a == a;
a|a == a;
a|(a&b) == a;
a&(a|b) == a;
public void isOddOrEven(int n){
if ((n & 1) == 1) {
System.out.println("Odd");
} else {
System.out.println("Even");
}
}
public void swap() {
int a = 1, b = 2;
a ^= b;
b ^= a;
a ^= b;
System.out.println("a:" + a);
System.out.println("b:" + b);
}
public void negate() {
int a = -10, b = 10;
System.out.println(~a + 1);
System.out.println(~b + 1);
}
public int abs(int a) {
int i = a >> 31;
return i == 0 ? a : (~a + 1);
}
public int abs(int a) {
return a ^ (a >> 31)) - (a >> 31);
}
fun isPowerOfTwo(num: Int): Boolean {
if (num < 1) {
return false
}
return num.and(num - 1) == 0
}
// 6. 判断一个数num是不是 4 的幂
System.out.println((1 << 31) - 1);
System.out.println(~(1 << 31));
System.out.println(1 << 31);
System.out.println(1 << -1);
System.out.println(((long)1 << 127) - 1);
n << 1;
n >> 1;
System.out.println(10<<3);
System.out.println(16>>3);
System.out.println(b&((a-b)>>31) | a&(~(a-b)>>31));
System.out.println(a&((a-b)>>31) | b&(~(a-b)>>31));
System.out.println((a ^ b) > 0);
System.out.println(2<<(n-1));
System.out.println((a+b) >> 1);
int m = 2;
System.out.println((n >> (m-1)) & 1);
System.out.println(n | (1<<(m-1)));
System.out.println(n & ~(0<<(m-1)));