>백엔드 개발 >C++ >두 숫자의 XNOR

두 숫자의 XNOR

WBOY
WBOY앞으로
2023-09-09 20:33:04697검색

두 숫자의 XNOR

XNOR(XNOR) 게이트는 두 개의 입력을 받아들이고 하나의 출력을 제공하는 디지털 논리 게이트입니다. 그 기능은 배타적 OR(XOR) 게이트의 논리적 보완입니다. 두 입력이 동일하면 출력은 TRUE이고, 입력이 다르면 FALSE입니다. XNOR 게이트의 진리표는 다음과 같습니다.

하나 출력
1 1 1
1 0 0
0 1 0
0 0 1

문제 설명

두 개의 숫자 x와 y가 주어졌습니다. 두 숫자의 XOR을 구합니다.

예제 1

으아악 으아악

지침

으아악

Sampe 예제 2

의 중국어 번역은 다음과 같습니다.

Sampe 예제 2

으아악 으아악

지침

으아악

방법 1: 폭력적인 방법

무차별 대입 방법은 두 숫자의 모든 비트를 확인하고 동일한지 비교하는 것입니다. 같으면 1을 더하고, 같으면 0을 더합니다.

의사코드

으아악

예: C++ 구현

아래 프로그램에서 x와 y의 비트가 동일한지 확인한 후 답에 비트를 설정하세요.

으아악

출력

으아악

시간 복잡도: O(logn), 순회가 모든 logn 비트에서 수행되기 때문입니다.

공간 복잡도: O(1)

방법 2

XNOR는 XOR 연산의 역연산이고, 진리표 역시 XOR 테이블의 역연산입니다. 따라서 더 높은 숫자의 비트를 전환합니다. 즉, 1을 0으로, 0을 1로 설정한 다음 낮은 숫자와 XOR을 수행하면 XNOR 숫자가 생성됩니다.

예 1

으아악 으아악

지침

으아악

Sampe 예제 2

의 중국어 번역은 다음과 같습니다.

Sampe 예제 2

으아악 으아악

지침

으아악

의사코드

으아악

예: C++ 구현

아래 프로그램에서는 높은 숫자의 모든 비트가 토글된 다음 낮은 숫자와 XOR됩니다.

으아악

출력

으아악

시간 복잡도: 토글() 함수의 순회로 인해 O(logn)

공간 복잡도: O(1)

방법 3: 비트 마스크

논리적으로 XNOR는 XOR의 역연산이지만, XOR에서 2의 보수 연산을 하면 선행 0도 반전됩니다. 이를 방지하려면 비트 마스크를 사용하여 불필요한 선행 비트를 모두 제거할 수 있습니다.

예제 1

으아악 으아악

지침

으아악

예 2

으아악 으아악

지침

으아악

의사코드

으아악

예: C++ 구현

아래 프로그램에서는 비트 마스크를 사용하여 x xor y의 역수에서 필요한 비트만 가져옵니다.

으아악

출력

으아악

결론

요약하자면, 두 숫자의 XNOR는 O(logn) 무차별 대입 방법부터 O(1) 최적 방법까지 다양한 방법과 시간 복잡도를 사용하여 찾을 수 있습니다. 비트 연산을 적용하는 것이 더 저렴하므로 무차별 대입 방법의 복잡성은 대수적입니다.

위 내용은 두 숫자의 XNOR의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제