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

C++で指定された数値の2進表現の先行ゼロの数


数値が与えられると、そのバイナリ表現で先行ゼロの数を見つける必要があります。合計ビット数を32と仮定します。例を見てみましょう。

入力

5

出力

25

5のバイナリ表現は00000...00101です。先行ゼロの数は29です。

アルゴリズム

  • 番号nを初期化します。
  • nのバイナリ表現を見つけます。
  • ビットの総数、つまり32からnのバイナリ表現の長さを引きます。
  • 結果を返します。

実装

以下は、C++での上記のアルゴリズムの実装です

#include <bits/stdc++.h>
using namespace std;
int getLeadingZeroesCount(unsigned int n) {
   int totalBits = sizeof(n) * 8;
   string binary = "";
   while (n) {
      int remainder = n % 2;
      if (remainder || binary.length() > 0) {
         binary += remainder;
      }
      n /= 2;
   }
   return totalBits - binary.length();
}
int main() {
   int n = 101;
   cout << getLeadingZeroesCount(n) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

25

  1. 特定のバイナリツリーがC++のSumTreeであるかどうかを確認します

    ここでは、二分木が和木であるかどうかを確認する方法を説明します。ここで問題となるのは、合計ツリーとは何かです。合計ツリーは、ノードがその子の合計値を保持する二分木です。ツリーのルートには、その下にあるすべての要素の合計が含まれます。これは合計ツリーの例です- これを確認するために、簡単なトリックに従います。合計値がルートと同じである場合は、左右のサブツリー要素の合計を見つけます。これが合計ツリーです。これは再帰的なアプローチの1つになります。 例 #include <bits/stdc++.h> using namespace std; class node {  

  2. 8進数を2進数に変換するC++プログラム

    コンピューターシステムでは、2進数は2進数で表され、8進数は8進数で表されます。 2進数は基数2で、8進数は基数8です。 2進数とそれに対応する8進数の例は次のとおりです- 2進数 8進数 01101 15 00101 5 10110 26 01010 12 8進数を2進数に変換するプログラムは次のとおりです- 例 #include <iostream> #include <cmath> using namespace std; int OctalToBinary(int octalNum) {