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

C++で大きな2進数の1ビットの数を見つける


32ビットの符号なし2進数が与えられた場合、タスクは設定されたビットをカウントすることです。つまり、「1」がその中に存在します。

入力:

N = 00000000000000100111

出力:

4

説明: 指定された符号なし数値に存在するセットビットの合計は4であるため、出力は「4」として返されます。

この問題を解決するためのアプローチ

符号なしの32ビットの2進数を指定しました。タスクは、そこに存在する「1」の数を数えることです。

指定された2進数に存在する「1」の数をカウントするには、2進数を入力パラメーターとして受け取る組み込みのSTL関数「__builin_popcount(n)」を使用できます。

  • 2進数のNを入力として使用します。
  • 関数count1Bit(uint32_t n)は、32ビットの2進数を入力として受け取り、2進数に存在する「1」のカウントを返します。
  • 組み込み関数__builtin_popcount(n)は、パラメーターとして「n」の入力を受け取り、カウントを返します。

#include<bits/stdc++.h>
using namespace std;
int count1bits(uint32_t n) {
   return bitset < 32 > (n).count();
}
int main() {
   uint32_t N = 0000000010100000011;
   cout << count1bits(N) << endl;
   return 0;
}

上記のコードを実行すると、次のように出力が生成されます

出力

4

指定された数には、4つのセットビットまたは「1」が含まれています。したがって、出力は「4」です。


  1. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります

  2. 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 ここでは、関数_