用 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
广告