C++でビット単位のAND数値Nのセットを出力します
この問題では、nの2進数のビットごとのANDである0からnまでのすべての数値を出力する必要があります。
概念をよりよく理解するために例を見てみましょう。
Input : N = 4. Output : 0 4 Explanation : 0 & 4 = 0 1 & 4 = 0 2 & 4 = 0 3 & 4 = 0 4 & 4 = 4. Input : N = 6 Output : 0, 2, 4, 6
この問題を解決するには、ビット演算子を使用する必要があります。これらを使用して、必要なサブセットを見つけます。返される値のみを使用する別の更新関数を使用して、nから1まで逆方向に反復し、nを含むいくつかのANDの出力と操作を行います。操作はi=(i-1)&Nです。
このアイデアに基づいて、アルゴリズムを作成しましょう-
アルゴリズム
Step 1 : Loop from n to 1 using decrement operator i = (i-1) & n Step 2 : PRINT i. Step 3 : EXIT.
例
上記のアルゴリズムのプログラム実装-
#include <iostream> using namespace std; int main() { int n = 11; for (int i = n; i > 0; i = (i - 1) & n) cout << i << " "; cout << 0; return 0; }
出力
11 10 9 8 3 2 1 0
-
C++プログラミングのバイナリツリーの各ノードのセットビット数を出力します。
バイナリツリーが与えられると、関数はノードに格納されているキーのバイナリ値を生成し、そのバイナリに相当するビット数(1)を返します。 例 次のようなキーを持つ二分木:10 3 211 140162100および146 キー 同等のバイナリ ビット(出力)を設定 10 1010 2 3 0011 2 211 11010011 5 140 10001100 3 162 10100010 3 100 1100100 3 146 10010010 3 ここでは、関数_
-
C ++のビットごとのANDとは何ですか?
ビットごとのAND演算子(&)は、第1オペランドの各ビットを第2オペランドの対応するビットと比較します。両方のビットが1の場合、対応する結果ビットは1に設定されます。それ以外の場合、対応する結果ビットは0に設定されます。ビット単位の包括的AND演算子の両方のオペランドは、整数型である必要があります。たとえば、 例 #include <iostream> using namespace std; int main() { unsigned short a = 0x5555;