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

C++에서 숫자 N의 비트 AND 세트 인쇄


이 문제에서는 0에서 n까지의 모든 숫자를 출력해야 합니다. 이 숫자는 n의 이진법에 대한 Bitwise AND입니다.

개념을 더 잘 이해할 수 있도록 예를 들어 보겠습니다.

Input : N = 4.
Output : 0 4
Explanation :
   0 & 4 = 0
   1 & 4 = 0
   2 & 4 = 0
   3 & 4 = 0
   4 & 4 = 4.
Input : N = 6
Output : 0, 2, 4, 6

이 문제를 해결하려면 비트 연산자를 사용해야 합니다. 이를 사용하여 필요한 하위 집합을 찾습니다. 반환되는 값만 n의 출력과 일부 AND의 연산을 사용하는 다른 업데이트 함수를 사용하여 n에서 1까지 역방향으로 반복합니다. 연산은 i =(i-1) &N입니다.

이 아이디어를 기반으로 알고리즘을 만들 수 있습니다 -

알고리즘

Step 1 : Loop from n to 1 using decrement operator i = (i-1) & n
Step 2 : PRINT i.
Step 3 : EXIT.

예시

위 알고리즘의 프로그램 구현 -

#include <iostream>
using namespace std;
int main() {
   int n = 11;
   for (int i = n; i > 0; i = (i - 1) & n)
      cout << i << " ";
   cout << 0;
   return 0;
}

출력

11 10 9 8 3 2 1 0