如何确定一个数字中的所有设置位是否也设置在另一个数字中?

时间:2016-08-12 22:43:16

标签: java bit-manipulation

给定2个相同长度的二进制字符串ab(例如111000110000),是否可以检查{{1}中的所有设置位还使用按位运算在b中设置?在上面的示例中,a在位置1和2(从左到右)中有两个设置位,这些位也在b = 110000中设置。

我可以按字符比较两个字符串,但这样会太慢。我知道我可以使用类似a = 111000的字符串将字符串转换为数字,但我不知道用于实现任务的按位操作。

1 个答案:

答案 0 :(得分:0)

只需比较字符:

for (int pos = 0; (pos = b.indexOf('1', pos)) != -1; ++pos) {
  if (a.charAt(pos) != '1') {
    return false;
  }
}
return true;

b.indexOf('1', pos)会从位置1开始找到b中的下一个pos;只需检查a中的相应字符是否也是1