用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 程序设计
C++
C#
MongoDB
MySQL
Javascript
PHP