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