Python
 Computer >> コンピューター >  >> プログラミング >> Python

C++のリバースビット


符号なし数値xが1つあり、その2進表現(32ビット符号なし整数)を簡単に見つけることができるとします。私たちの仕事はビットを逆にすることです。したがって、バイナリ表現が00000000000000000000001001110100のような場合、反転されたビットは00101110010000000000000000000000になります。したがって、ビットを反転した後に実際の数値を返す必要があります

これを解決するには、次の手順に従います-

  • nが指定された数であると仮定します
  • 答えましょう:=0
  • for i:=31から0:
    • answer:=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

  1. C++STLのリスト逆関数

    この記事では、C++でのlist::reverse()関数の動作、構文、および例について説明します。 STLのリストとは リストは、任意の場所で一定時間の挿入と削除を順番に実行できるデータ構造です。リストは、二重にリンクされたリストとして実装されます。リストを使用すると、連続しないメモリ割り当てが可能になります。リストは、配列、ベクトル、および両端キューよりも、コンテナー内の任意の位置で要素の挿入抽出と移動を実行します。リストでは、要素への直接アクセスは遅く、リストはforward_listに似ていますが、フォワードリストオブジェクトは単一のリンクリストであり、フォワードでのみ繰り返すことが

  2. 正の整数のビットを逆にするPythonプログラム?

    まず、bin()関数を使用して数値を2進数に変換します。次に、bin()が数値の2進表現のプレフィックスとして0bを追加し、残りの部分を逆にするため、2進表現の最初の2文字をスキップします。また、文字から、左から最後から2番目の文字まで反転します。反転した2進文字列を整数に変換します。 アルゴリズム integernumber(n,bit_size) /* n is the number and bit_size is the bitsize */ Step 1: first convert number into binary . Step 2: skip the first two c