【位操作】Java位操作奇怪技巧
首先来声明看一下 位操作的符号
&、|、~、^、<<、>>
技巧来啦,记住就行 没有必要深究:
1.或| 和 ' '空格 可以让大写变小写
1.或| 和 ' '空格 可以让大写变小写
('a' | ' ') = 'a' ('A' | ' ') = 'a'
2.与& 和 ’_‘ 下划线可以让小写变成大写
('b' & '_') = 'B' ('B' & '_') = 'B'
3.异或^ 和 ’ ‘空格 让大写小写互换
('d' ^ ' ') = 'D' ('D' ^ ' ') = 'd'
4.n&(n-1)
可以减去n的最后一个1
应用:(1)判断2的指数
2的指数应该都是只有一位1 也就是对应的首位
通过一次n&(n-1)可以得0 为2的指数
(2) 汉明重量(二进制数中有多少位1)
用一个计数器 通过不断的n&(n-1)直到0 计数器+1
返回计数器数值
转自https://github.com/labuladong/fucking-algorithm/blob/master/%E7%AE%97%E6%B3%95%E6%80%9D%E7%BB%B4%E7%B3%BB%E5%88%97/%E5%B8%B8%E7%94%A8%E7%9A%84%E4%BD%8D%E6%93%8D%E4%BD%9C.md