用 C++ 計算給定數字二進位制表示形式前導零的數量


給定一個數字,我們必須找出其二進位制表示形式中的前導零數量。假設總位數為 32 位。我們來看一個示例。

輸入

5

輸出

25

5 的二進位制表示形式為 00000...00101。前導零的數量為 29。

演算法

  • 初始化數字 n。
  • 找到 n 的二進位制表示形式。
  • 從總位數減去 n 的二進位制表示形式的長度,即 32。
  • 返回結果。

實現

以下是上述演算法在 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

更新於: 2021-10-26

500 次瀏覽

職業生涯起步

完成課程獲得認證

開始
廣告