>백엔드 개발 >C++ >두 숫자의 이진 표현 길이를 동일하게 조정한 다음 XOR 연산을 수행합니다.

두 숫자의 이진 표현 길이를 동일하게 조정한 다음 XOR 연산을 수행합니다.

WBOY
WBOY앞으로
2023-09-10 16:01:021335검색

두 숫자의 이진 표현 길이를 동일하게 조정한 다음 XOR 연산을 수행합니다.

XOR 또는 배타적 OR은 오류 검사, 내결함성 등을 위해 패리티 비트를 생성하는 데 사용되는 부울 논리 연산입니다. 이 연산을 나타내기 위해 ^, ⊕, ⊻ 등 다양한 기호가 사용됩니다.

XOR 논리

XOR 연산은 두 매개변수가 다른 경우에만 true입니다. 즉, 같은 비트의 XOR은 0이고, 서로 다른 비트의 XOR은 1이다.

같은 비트 -

0^0=0

1^1=0

다른 비트 −

0^1=1

1^0 = 1

문제 설명

두 개의 숫자 a와 b가 주어지면 이진 표현의 길이를 동일하게 만든 후 XOR을 찾습니다.

Tip − 더 작은 숫자 뒤에 후행 0을 추가하면 이진 표현이 동일해집니다.

들어가세요 -

a = 10, b = 5

출력-

0

지침

10의 이진수 표현은 1010이고 5의 이진수 표현은 101입니다.

뒤에 0을 5에 추가하면 1010이 됩니다.

따라서 1010^1010의 XOR 결과는 0입니다.

따라서 출력합니다.

들어가세요 -

a = 15, b = 8

출력

7

지침 -

15의 이진수 표현은 1111이고 8의 이진수 표현은 1000입니다.

두 이진 표현의 길이가 동일하므로 후행 0을 추가할 필요가 없습니다.

1111^1000의 XOR 결과는 0111이며, 이는 10진수 표기법으로 7입니다. 따라서 출력은 7입니다.

들어가세요 -

a = 15, b = 3

출력

7

지침 -

15의 이진수 표현은 1111입니다. 3의 이진수 표현은 11입니다. 뒤에 0이 붙는 3의 이진수 표현은 1100이 됩니다.

1111^1100의 XOR 결과는 0011입니다.

0011은 십진수로 표현하면 3입니다. 따라서 결과가 출력됩니다.

방법

  • 두 숫자의 자릿수를 세어보세요.

  • 자릿수는 0이 될 때까지 숫자를 오른쪽으로 이동하고 루프가 실행되는 횟수를 세어 계산할 수 있습니다. 숫자를 오른쪽으로 1자리 이동하면 2로 나누는 것과 같습니다.

  • 더 작은 숫자의 자릿수가 더 적은 경우 다음과 같이 왼쪽 시프트를 수행합니다: 더 작은_숫자

  • 두 숫자를 XOR하여 답을 구하고 인쇄하세요.

의사코드

으아아아

아래는 이진 표현의 길이를 동일하게 만든 후 두 숫자의 XOR 값을 계산하는 C++ 프로그램입니다.

으아아아

출력

으아아아

분석

시간 복잡도 - O(log n) [로그]

카운트 함수의 while 루프로 인해 시간 복잡도는 대수적입니다.

이 숫자는 0이 될 때까지 2로 나누어지기 때문에 복잡도는 log n base 2가 됩니다.

공간 복잡성 - O(1) [상수]

프로그램에서 추가 공간이 사용되지 않기 때문에 공간 복잡성이 일정합니다.

결론

이 기사에서는 이진 표현의 길이를 동일하게 만든 후 두 숫자의 XOR을 계산하는 문제에 대해 논의했습니다.

XOR의 개념을 설명한 후 예시와 방법을 설명했습니다. 이 방법은 후행 0을 사용하여 이진 표현의 비트 수를 동일하게 만듭니다. 우리는 또한 문제에 대한 의사코드와 C++ 프로그램도 보았습니다.

위 내용은 두 숫자의 이진 표현 길이를 동일하게 조정한 다음 XOR 연산을 수행합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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