우리에게 정수가 주어졌다고 가정해 봅시다. 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