Computer >> Máy Tính >  >> Lập trình >> Python

Đảo ngược bit trong C ++

Giả sử chúng ta có một số không dấu x, và chúng ta có thể dễ dàng tìm thấy biểu diễn nhị phân của nó (số nguyên không dấu 32 bit). Nhiệm vụ của chúng ta là đảo ngược các bit. Vì vậy, nếu biểu diễn nhị phân là 00000000000000000000001001110100, thì các bit đảo ngược sẽ là 0010111001000000000000000000000000. Vì vậy, chúng ta phải trả lại số thực sau khi đảo ngược các bit

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Giả sử n là số đã cho
  • để trả lời:=0
  • for i:=31 xuống 0:
    • answer:=answer OR (n VÀ i), và chuyển nó sang trái tôi lần
    • n:=n sau khi dịch sang phải 1 bit
  • trả lời câu trả lời

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơ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);
}

Đầu vào

0b00000000000000000000001001110100

Đầu ra

775946240