Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자에 인접한 두 개의 세트 비트가 있는지 확인하십시오.

<시간/>

여기서 우리는 숫자가 이진 표현에서 인접한 세트 비트를 가지고 있는지 볼 것입니다. 숫자 12에 두 개의 연속 1이 있다고 가정합니다(12 =1100).

이 유형의 숫자를 확인하는 아이디어는 매우 간단합니다. 숫자를 1비트로 이동한 다음 비트별 AND를 수행합니다. 비트 AND 결과가 0이 아닌 경우 연속 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