算法很美(蓝桥) | 位运算的奇技淫巧
2021-06-03 11:01
标签:结果 article pre bash tps res 位运算 lock 算法 在学习算法很美课程的时候,学习到了一些位运算的奇技淫巧,收录在此 判断偶数 将x右移 异或,可以理解为不进位加法, 这边课程讲的不是很明白,可以参考下位运算求整数的绝对值,写的很好。 算法很美(蓝桥) | 位运算的奇技淫巧 标签:结果 article pre bash tps res 位运算 lock 算法 原文地址:https://www.cnblogs.com/gcdd1993/p/14675242.html前言
判断奇偶数
判断奇数
1 & x == 1
System.out.println((1991 & 1) == 1);
1 & x == 0
System.out.println((1990 & 1) == 0);
获取二进制数x位y是1还是0
y - 1
位,与1int x = 0b010110010;
int y = 5;
int res = (x >> (y - 1)) & 1;
System.out.println(res);
交换两个整数变量的值
不用判断语句,求整数的绝对值
1 + 1 = 0,0 + 0 = 0,1 + 0 = 1
异或的性质
(a ^ b)^ c == a ^ ( b ^ c )
x ^ x = 0, x ^ 0 = x
,同自己求异或为0,同0求异或为自己A ^ B ^ B = A ^ 0 = A
,连续和同一个因子做异或运算,最终结果为自己int a = -100;
// a为正数,a >> 31 = 00000000 00000000 00000000 00000000,求绝对值就是自己
// a为负数,a >> 31 = 11111111 11111111 11111111 11111111,求绝对值就是自己 * -1(00000000 00000000 00000000 00000001)
System.out.println((a + (a >> 31) ^ (a >> 31)));
上一篇:WPF之InkCanvas控件