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

Kiểm tra xem một số có hai bit đặt liền kề trong C ++ hay không

Ở đây chúng ta sẽ thấy, nếu một số có các bit đặt liền kề trong biểu diễn nhị phân của nó. Giả sử số 12 có hai số 1 liên tiếp (12 =1100).

Để kiểm tra loại số này, ý tưởng rất đơn giản. Chúng tôi sẽ chuyển số 1 bit, sau đó thực hiện theo chiều dọc bit AND. Nếu kết quả theo bitwise AND khác 0, thì phải có một số số 1 liên tiếp.

Ví dụ

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

Đầu ra

Has Consecutive 1s