C ++中带交替位的二进制数

假设我们有一个正整数,我们必须检查它是否具有交替位-因此,两个相邻位将始终具有不同的值。

因此,如果输入类似于10,则输出将为True,因为10的二进制表示为1010。

为了解决这个问题,我们将遵循以下步骤-

  • p:= n与1

  • 如果n <2,则-

    • 返回真

  • n:= n / 2

  • 当n不为零时,执行-

    • 返回假

    • c:= n与1

    • 如果c XOR p等于0,则-

    • p:= c

    • n:= n / 2

  • 返回真

让我们看下面的实现以更好地理解-

示例

#include <bits/stdc++.h>

using namespace std;

class Solution {

public:

   bool hasAlternatingBits(int n) {

      bool p=n&1;

      bool c;

      if(n<2)

         return true;

      n>>=1;

      while(n){

         c=n&1;

         if(c^p==0)

            return false;

         p=c;

         n>>=1;

      }

      return true;

   }

};

main(){

   Solution ob;

   cout << (ob.hasAlternatingBits(10));

}

输入值

10

输出结果

1

以上是 C ++中带交替位的二进制数 的全部内容, 来源链接: utcz.com/z/326637.html

回到顶部