用 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