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