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

C++에서 x와의 XOR이 x보다 큰 더 작은 값 계산

<시간/>

우리에게 정수가 주어졌다고 가정해 봅시다. x와 작업은 x보다 작은 수를 세는 것입니다. x와의 XOR은 XOR 값보다 큰 값을 가져옵니다.

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

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

입력 - 정수 x =11

출력 − x와의 XOR이 x보다 큰 더 작은 값의 개수는 − 4

설명 -

x는 11로 주어지며, 이는 x보다 작은 숫자로 x의 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(거짓).

입력 -:정수 x =12

출력 − x와의 XOR이 x보다 큰 더 작은 값의 개수는 − 11입니다.

설명 -

x는 12로 주어지며, 이는 x보다 작은 숫자로 x의 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( 거짓).

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

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

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

  • 결과를 저장할 임시 변수 count와 num이라는 변수를 만들고 1로 설정합니다.

  • x !=0

    까지 WHILE 루프 시작
  • 루프 내에서 IF x%2 ==0을 확인한 다음 count를 count + num

    으로 설정합니다.
  • num을 num * 2로 설정하고 x를 x / 2로 설정

  • 개수 반환

  • 결과 인쇄

예시

#include
using namespace std;
int XOR_smaller(int x){
   int count = 0;
   int num = 1;
   while (x != 0){
      if (x%2 == 0){
         count = count + num;
      }
      num = num*2;
      x = x/2;
   }
   return count;
}
int main(){
   int x = 20;
   cout<<"Count of smaller values whose XOR with x is greater than x are: "<<XOR_smaller(x);
   return 0;
}

출력

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

Count of smaller values whose XOR with x is greater than x are: 11