Computer >> Máy Tính >  >> Lập trình >> C ++

Số nhị phân với bit xen kẽ trong C ++

Giả sử chúng ta có một số nguyên dương, chúng ta phải kiểm tra xem nó có các bit xen kẽ hay không - vì vậy, hai bit liền kề sẽ luôn có các giá trị khác nhau.

Vì vậy, nếu đầu vào là 10, thì đầu ra sẽ là True, vì biểu diễn nhị phân của 10 là 1010.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • p:=n VÀ 1
  • nếu n <2, thì -
    • trả về true
  • n:=n / 2
  • while n khác 0, do -
    • c:=n VÀ 1
    • nếu c XOR p giống 0, thì -
      • trả về false
    • p:=c
    • n:=n / 2
  • trả về true

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#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));
}

Đầu vào

10

Đầu ra

1