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

n과의 XOR이 C++에서 더 큰 값을 생성하는 더 작은 숫자 계산

<시간/>

예를 들어 num이라는 정수가 주어지고 작업은 num과의 XOR이 XOR 값보다 큰 값을 생성하는 num보다 작은 수를 세는 것입니다.

XOR 연산의 진리표는 다음과 같습니다.

A B XOR B
0 0 0
1 0 1
0 1 1
1 1 0

입력 - 정수 숫자 =11

출력 − n과의 XOR이 더 큰 값을 생성하는 더 작은 수의 개수는 − 4

입니다.

설명 -

num은 11로 주어지며, 이는 num보다 작은 숫자로 num의 XOR을 찾아야 함을 의미합니다. 따라서 숫자는 1 XOR 11 <11(FALSE), 2 XOR 11 <11(FALSE), 3 XOR 11 <11(FALSE), 4 XOR 11> 11(TRUE), 5 XOR 11> 11(TRUE), 6입니다. XOR 11> 11(참), 7 XOR 11> 11(참), 8 XOR 11<11(거짓), 9 XOR 11 <11(거짓), 10 XOR 11 <11(거짓).

입력 - 정수 숫자 =12

출력 − n과의 XOR이 더 큰 값을 생성하는 더 작은 수의 개수는 − 3

입니다.

설명 -

num은 12로 주어지며, 이는 num보다 작은 숫자로 num의 XOR을 찾아야 함을 의미합니다. 따라서 숫자는 1 XOR 12> 12(TRUE), 2 XOR 12> 12(TRUE), 3 XOR 12> 12(TRUE), 4 XOR 12 <12(FALSE), 5 XOR 12 <12(FALSE), 6입니다. XOR 12 <12(거짓), 7 XOR 12<12(거짓), 8 XOR 12<12(거짓), 9 XOR 12 <12(거짓), 10 XOR 12 <12(거짓), 11 XOR 12 <12( 거짓).

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수 요소를 입력하고 num이라는 변수에 저장합니다.

  • 추가 처리를 위해 num 값을 함수에 전달합니다.

  • 결과를 저장할 임시 변수 개수를 만듭니다.

  • num> 0

    까지 WHILE 루프 시작
  • 루프 내에서 IF num &1 ==TRUE를 확인한 다음 count를 count + pow(2, temp)

    로 설정합니다.
  • temp 값을 1 증가

  • 그리고 num을 num으로 설정>> =1

  • 개수 반환

  • 결과 인쇄

예시

#include
using namespace std;
//Count smaller numbers whose XOR with n produces greater value
int XOR_greater(int n){
   int temp = 0;
   int count = 0;
   while (n > 0){
      if ((n&1) == 0){
         count += pow(2, temp);
      }
      temp++;
      n >>= 1;
   }
   return count;
}
int main(){
   int n = 20;
   cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Count of smaller numbers whose XOR with n produces greater value are: 11