一、使用场景
包含但是不局限于以下场景使用。
- 判断当前正整数的二进制末位是 1 。(结合位移使用,效果更佳)
二、通用示例
1. 给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。
代码如下(示例):
public static void main(String[] args) {
// 22 的二进制是 "10110"
int n = 22;
int maxLen = 0;
for (int i = 0, j = -1; n != 0 ; i++) {
if ((n&1) == 1) {
if (j != -1) {
maxLen = Math.max(maxLen, i - j);
}
j = i;
}
n>>=1;
}
System.out.println(maxLen);
}
三、要点
- 0&1=0,1&1=1
四、总结
以上示例只是用于展示使用方法。
更丰富的例子可以参考力扣的题目:
868. 二进制间距