检查一个数字是否在C ++中具有两个相邻的设置位
在这里,我们将看到,如果一个数字在其二进制表示形式中具有相邻的设置位。假设数字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