XNOR(XNOR) 게이트는 두 개의 입력을 받아들이고 하나의 출력을 제공하는 디지털 논리 게이트입니다. 그 기능은 배타적 OR(XOR) 게이트의 논리적 보완입니다. 두 입력이 동일하면 출력은 TRUE이고, 입력이 다르면 FALSE입니다. XNOR 게이트의 진리표는 다음과 같습니다.
하나 | 비 | 출력 |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
두 개의 숫자 x와 y가 주어졌습니다. 두 숫자의 XOR을 구합니다.
무차별 대입 방법은 두 숫자의 모든 비트를 확인하고 동일한지 비교하는 것입니다. 같으면 1을 더하고, 같으면 0을 더합니다.
아래 프로그램에서 x와 y의 비트가 동일한지 확인한 후 답에 비트를 설정하세요.
으아악시간 복잡도: O(logn), 순회가 모든 logn 비트에서 수행되기 때문입니다.
공간 복잡도: O(1)
XNOR는 XOR 연산의 역연산이고, 진리표 역시 XOR 테이블의 역연산입니다. 따라서 더 높은 숫자의 비트를 전환합니다. 즉, 1을 0으로, 0을 1로 설정한 다음 낮은 숫자와 XOR을 수행하면 XNOR 숫자가 생성됩니다.
아래 프로그램에서는 높은 숫자의 모든 비트가 토글된 다음 낮은 숫자와 XOR됩니다.
으아악시간 복잡도: 토글() 함수의 순회로 인해 O(logn)
공간 복잡도: O(1)
논리적으로 XNOR는 XOR의 역연산이지만, XOR에서 2의 보수 연산을 하면 선행 0도 반전됩니다. 이를 방지하려면 비트 마스크를 사용하여 불필요한 선행 비트를 모두 제거할 수 있습니다.
아래 프로그램에서는 비트 마스크를 사용하여 x xor y의 역수에서 필요한 비트만 가져옵니다.
으아악요약하자면, 두 숫자의 XNOR는 O(logn) 무차별 대입 방법부터 O(1) 최적 방법까지 다양한 방법과 시간 복잡도를 사용하여 찾을 수 있습니다. 비트 연산을 적용하는 것이 더 저렴하므로 무차별 대입 방법의 복잡성은 대수적입니다.
위 내용은 두 숫자의 XNOR의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!