C의 논리 XOR 연산자
이 기사에서는 C 프로그래밍 언어의 논리 XOR(^
) 연산자에 대해 알아봅니다.
C의 XOR(^
) 연산자 개요
XOR이라고도 하는 ‘배타적 OR’은 피연산자 중 하나가 참(하나는 참이고 다른 하나는 거짓)일 때 ‘참’ 결과를 반환하지만 둘 다 참이거나 둘 다 참일 때는 반환하지 않는 논리 연산자입니다. 거짓. 두 피연산자가 모두 true인 경우 논리 조건 생성에 기본 ‘or’를 사용하면 혼란이 생길 수 있습니다.
그러한 상황에서 정확히 기준을 충족하는 것이 무엇인지 이해하기 어렵기 때문입니다. 이 문제는 또는
이라는 단어에 독점적
한정자를 추가하여 해결되었으며, 이는 의미도 명확히 합니다.
^
를 사용하여 C 프로그래밍 언어에서 XOR 적용
비트별 XOR이라고도 하는 ^
연산자는 두 개의 정수를 피연산자로 사용하고 두 숫자의 모든 비트에 대해 XOR을 수행합니다.
두 비트가 다른 경우 XOR 연산은 1
값을 제공합니다. 비트가 동일하면 0.
값을 반환합니다.
C에서 비트별 XOR을 적용하는 예를 들어 보겠습니다. 먼저 라이브러리를 가져오고 main()
함수를 만듭니다.
#include <stdio.h>
int main() {}
기본 함수 내에서 int 데이터 유형으로 firstValue
및 secondValue
라는 두 개의 변수를 설정하고 각각에 대해 정수 값을 설정합니다. 이진 형식에서 firstValue
는 0101,
과 같고 secondValue
는 1001
과 같습니다.
int firstValue = 5;
int secondValue = 9;
이제 이 두 변수가 있으므로 여기에 XOR을 적용해야 하므로 applyXOR
이라는 새 변수를 만들고 이 두 변수에 ^
기호를 사용하겠습니다.
int applyXOR = firstValue ^ secondValue;
위 식에서 XOR 연산은 다음과 같이 두 이진 값 모두에 대해 수행됩니다.
firstValue |
secondValue |
firstValue ^ secondValue |
---|---|---|
0 | 1 | 1 |
1 | 0 | 1 |
0 | 0 | 0 |
1 | 1 | 0 |
이제 우리는 이진 형식으로 숫자 1100
을 얻습니다. 십진수로 변환하면 값 12
와 동일합니다. 그런 다음 얻은 값을 인쇄합니다.
printf("The value obtained after applying XOR is: %d", applyXOR);
C 프로그래밍 언어에서 XOR 적용
코드 예:
#include <stdio.h>
int main() {
int firstValue = 5;
int secondValue = 9;
int applyXOR = firstValue ^ secondValue;
printf("The value obtained after applying XOR is: %d", applyXOR);
return 0;
}
출력:
The value obtained after applying XOR is: 12
XOR(^
) 연산자의 작동을 보여주기 위해 또 다른 예를 들어 보겠습니다.
모든 항목이 하나의 숫자를 제외하고 짝수 번 발생하는 숫자 모음이 주어지면 홀수 발생하는 숫자를 찾으십시오. XOR(^
) 연산자를 각 정수에 간단히 적용하여 이 문제를 해결하는 것이 효과적인 방법입니다.
코드 예:
#include <stdio.h>
int getOddOccurringNumber(int arr[], int number) {
int value = 0, i;
for (i = 0; i < number; i++) value ^= arr[i];
return value;
}
int main(void) {
int array[] = {12, 12, 14, 90, 14, 16, 16};
int sizeNumber = sizeof(array) / sizeof(array[0]);
printf("The value that occurred odd times in the list is: %d ",
getOddOccurringNumber(array, sizeNumber));
return 0;
}
출력:
The value that occurred odd times in the list is: 90
I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.
LinkedIn