Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

C++의 비트 반전

<시간/>

하나의 부호 없는 숫자 x가 있고 이의 이진 표현(32비트 부호 없는 정수)을 쉽게 찾을 수 있다고 가정합니다. 우리의 임무는 비트를 뒤집는 것입니다. 따라서 이진 표현이 0000000000000000000001001110100과 같으면 반전된 비트는 0010111001000000000000000000000이 됩니다. 따라서 비트를 반전한 후

실제 숫자를 반환해야 합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n이 주어진 숫자라고 가정합니다.
  • 답변 :=0
  • i:=31에서 0:
    • answer :=OR(n AND i)에 답하고 왼쪽으로 i번 이동
    • n :=1 비트 오른쪽 시프트 후 n
  • 반환 응답

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   uint32_t reverseBits(uint32_t n) {
      uint32_t ans = 0;
      for(int i = 31; i >= 0; i--){
         ans |= (n & 1) <<i;
         n>>=1;
      }
      return ans;
   }
};
main(){
   Solution ob;
   cout << ob.reverseBits(0b00000000000000000000001001110100);
}

입력

0b00000000000000000000001001110100

출력

775946240