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

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

  1. C++で設定されたビット数に従って配列をソートします

    ここでは、セットビットに基づいて配列をソートするための1つの興味深い問題があります。配列内の要素のセットビット数が多い場合、それはセットビット数の少ない別の要素の前に配置されます。いくつかの数が12、15、7であると仮定します。したがって、設定されたビットは、基本的に2進表現の1の数です。これらは、1100(12)、1111(15)、および0111(7)です。したがって、並べ替えると次のようになります- 1111, 0111, 1100 (15, 7, 12) ここでは、最初にセットビットの数を見つける必要があります。次に、C++STLソート関数を使用してそれらをソートします。セットビット数

  2. Pythonは範囲内のセットビットをカウントしますか?

    2進数に変換されたときに指定された正の数には、いくつかのセットビットがあります。 2進数のセットビットは1で表されます。この記事では、2進数に変換された後、特定の数値のセットビットの数を取得する方法を説明します。 ビンの使用とスライス 次の例では、数値を取得し、bin関数を適用してバイナリ値を取得します。次に、それをスライスして2進数に追加されたプレフィックスを削除し、範囲関数を適用してセットビットの数を取得します。 例 def SetBits_cnt(n, l, r):    bin_val = bin(n)    # Remove '0b