用 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 次浏览

职业生涯起步

完成课程获得认证

开始
广告