扫描“位模式”以匹配整数

时间:2013-11-16 14:09:31

标签: java bit

我想创建一个方法“扫描”像110这样的BitPattern的整数,并将结果作为布尔值返回。

例如:

  • BitPattern设置为110
  • 整数位设置为2461(位:00001001 10011101

BitPattern与整数匹配并返回true

0000100110011101 -> integer 

       110       -> Bitpattern

我该怎么做?

1 个答案:

答案 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”位,则此版本将提前退出。