检查数字是否有其他模式的位-在C ++中设置1

让我们考虑我们有一个整数n。问题是检查此整数是否具有等效的二进制二进制模式。备用模式表示101010…。

方法类似于:使用二进制等效项检查每个数字,如果两个连续的相同,则返回false,否则返回true。

示例

#include <iostream>
using namespace std;
bool hasAlternatePattern(unsigned int n) {
   int previous = n % 2;
   n = n/2;
   while (n > 0) {
      int current = n % 2;
      if (current == previous) // If current bit is same as previous
      return false;
      previous = current;
      n = n / 2;
   }
   return true;
}
int main() {
   unsigned int number = 42;
   if(hasAlternatePattern(number))
      cout << "Has alternating pattern";
   else
      cout << "Has no alternating pattern";
}

输出结果

Has alternating pattern