C++の範囲のセットビットをコピーします
このチュートリアルでは、指定された範囲内のある数値のセットビットを別の数値にコピーするプログラムについて説明します。
このために、2つの整数が提供されます。私たちのタスクは、最初の数値のビットを確認し、それらが指定された範囲内にある場合は、それらのビットを2番目の数値にも設定することです。最後に、生成された数字を返します。
例
#include <bits/stdc++.h> using namespace std; //copying set bits from y to x void copySetBits(unsigned &x, unsigned y, unsigned l, unsigned r){ //l and r should be between 1 and 32 if (l < 1 || r > 32) return ; for (int i=l; i<=r; i++){ int mask = 1 << (i-1); if (y & mask) x = x | mask; } } int main() { unsigned x = 10, y = 13, l = 2, r = 3; copySetBits(x, y, l, r); cout << "Modified x: " << x; return 0; }
出力
Modified x: 14
-
C++で設定されたビット数に従って配列をソートします
ここでは、セットビットに基づいて配列をソートするための1つの興味深い問題があります。配列内の要素のセットビット数が多い場合、それはセットビット数の少ない別の要素の前に配置されます。いくつかの数が12、15、7であると仮定します。したがって、設定されたビットは、基本的に2進表現の1の数です。これらは、1100(12)、1111(15)、および0111(7)です。したがって、並べ替えると次のようになります- 1111, 0111, 1100 (15, 7, 12) ここでは、最初にセットビットの数を見つける必要があります。次に、C++STLソート関数を使用してそれらをソートします。セットビット数
-
Pythonは範囲内のセットビットをカウントしますか?
2進数に変換されたときに指定された正の数には、いくつかのセットビットがあります。 2進数のセットビットは1で表されます。この記事では、2進数に変換された後、特定の数値のセットビットの数を取得する方法を説明します。 ビンの使用とスライス 次の例では、数値を取得し、bin関数を適用してバイナリ値を取得します。次に、それをスライスして2進数に追加されたプレフィックスを削除し、範囲関数を適用してセットビットの数を取得します。 例 def SetBits_cnt(n, l, r): bin_val = bin(n) # Remove '0b