Cho một số, chúng ta phải tìm số lượng các số 0 đứng đầu trong biểu diễn nhị phân của nó. Giả sử tổng số bit là 32. Hãy xem một ví dụ.
Đầu vào
5
Đầu ra
25
Biểu diễn nhị phân của 5 là 00000 ... 00101. Số lượng các số 0 đứng đầu là 29.
Thuật toán
- Khởi tạo số n.
- Tìm biểu diễn nhị phân của n.
- Trừ độ dài biểu diễn nhị phân của n từ tổng số bit, tức là .., 32.
- Trả lại kết quả.
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong 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;
} Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
25