我只是想学习按位/移位操作。
我遇到了下面的程序,但不理解下面程序中的 AND 条件部分(checker & (1 << val)。最终值什么时候会大于 0?有人可以解释一下那里发生了什么吗?
样本输入:xyzz
样本输出:
8388608Value 0checker 0最终值
16777216Value 8388608checker 0最终值
33554432Value 25165824checker 0 最终值
33554432Value 58720256checker 33554432final value
public static boolean isUniqueChars(String str) {
int checker = 0;
for (int i = 0; i < str.length(); i++) {
int val = str.charAt(i) - 'a';
System.out.println((1 << val) + "Value");
System.out.println((checker) + "checker");
System.out.println(((checker & (1 << val))) + "final value\n");
if ((checker & (1 << val)) > 0) {
return false;
} else {
checker = checker | (1 << val);
}
}
return true;
}
}