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