在 C++ 中检查数字是否具有两个相邻的设置位

c++server side programmingprogramming

在这里我们将看到,数字在其二进制表示中是否有相邻的设置位。假设数字 12 有两个连续的 1(12 = 1100)。

要检查这种类型的数字,想法很简单。我们将数字移位 1 位,然后进行按位与运算。如果按位与结果非零,则必须有一些连续的 1。

示例

#include <iostream>
using namespace std;
bool hasConsecutiveOnes(int n) {
   if((n & (n >> 1)) == 1){
   return true;
   }else{
      return false;
   }
}
int main() {
   int num = 67; //1000011
   if(hasConsecutiveOnes(num)){
      cout << "Has Consecutive 1s";
   }else{
      cout << "Has No Consecutive 1s";
   }
}

输出

Has Consecutive 1s

相关文章