>  기사  >  백엔드 개발  >  2바이트마다 2비트마다 교환

2바이트마다 2비트마다 교환

WBOY
WBOY앞으로
2023-09-11 23:01:021408검색

2바이트마다 2비트마다 교환

이 기사에서는 주어진 숫자의 모든 대체 비트를 교환하고 결과 숫자를 반환하는 코드 솔루션에 대해 논의합니다. 우리는 루프를 사용하지 않고 일정한 시간에 문제를 해결하기 위해 비트 연산의 개념을 사용하여 이 문제를 해결할 것입니다.

문제 설명 − 숫자 n이 주어지면 서로 인접한 비트 쌍을 바꿔야 합니다.

즉, 홀수 위치에 있는 모든 비트를 인접한 짝수 위치 비트와 바꿔야 합니다.

제약: 문제를 해결하는 동안 우리는 이 문제에 루프를 사용할 수 없다는 점을 명심해야 하며 O(1) 시간 복잡도로만 코드를 실행해야 합니다.

Input − n = 10011110

출력 - 짝수 비트와 홀수 비트를 교환한 후

얻은 이진수: 01101101

Input − n = 10011110

출력 - 짝수 비트와 홀수 비트를 교환한 후

얻은 이진수: 01101101

설명

더 나은 이해를 위해 이전 예를 살펴보겠습니다.

으아아아

결과적으로 우리는 홀수 위치에 짝수 위치 비트를 원하고 그 반대도 마찬가지입니다

홀수 위치의 짝수 위치 비트의 경우

짝수 위치를 한 위치만큼 오른쪽으로 이동해야 합니다.

짝수 위치의 비트에 대해서는 E >> 1을 변경하여 원하는 위치를 얻습니다.

마찬가지로, 홀수 비트의 원하는 위치를 얻으려면 홀수 위치 비트를 한 위치만큼 왼쪽으로 이동해야 합니다.

따라서 홀수 비트의 경우 원하는 위치를 얻으려면 O

이제 다음 문제는 홀수 및 짝수 위치 비트를 추출하는 것입니다.

우리가 알고 있듯이

으아아아

n에서 E를 추출하려면 수행만 하면 됩니다

으아아아

마찬가지로 n에서 O를 추출하려면 다음을 수행해야 합니다.

으아아아

이제, 교체된 출력을 찾으려면

단계

관련 단계는 다음과 같습니다.

  • E>>1

  • 이제 or 연산을 이용해 E와 O를 결합해보겠습니다.

  • 따라서 결과는 – Result = ( E >> 1 | O

Example

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

Example

이 메서드의 코드는 다음과 같습니다.

으아아아

출력

으아아아

시간 복잡도 - 이 방법의 시간 복잡도는 O(1)입니다.

공간 복잡성 - 추가 공간을 사용하지 않습니다. 보조 공간 복잡도는 O(1)입니다.

위 내용은 2바이트마다 2비트마다 교환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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