我想创建一个方法“扫描”像110
这样的BitPattern的整数,并将结果作为布尔值返回。
例如:
110
2461
(位:00001001 10011101
) BitPattern与整数匹配并返回true
0000100110011101 -> integer
110 -> Bitpattern
我该怎么做?
答案 0 :(得分:1)
只是刺了一下,还没有测试......
public boolean isMatchBitPattern(int target, int pattern) {
for (int i = 0; i < 32; i++) {
if (((target >> i) & pattern) == pattern) {
return true;
}
}
return false;
}
也许更快,或许不是:
public boolean isMatchBitPattern(int target, int pattern) {
for (int i = 0; i < 32 && target != 0; i++) {
if ((target & pattern) == pattern) {
return true;
}
target >>= 1;
}
return false;
}
如果正在测试的目标中没有剩余的“1”位,则此版本将提前退出。