Computer >> Máy Tính >  >> Lập trình >> C ++

Số lượng các số 0 ở đầu trong biểu diễn nhị phân của một số nhất định trong C ++

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