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

Số lớn nhất có biểu diễn nhị phân là m 1 và m-1 0 trong C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm số lớn nhất với m 1 và m - 1 0.

Hãy xem các bước để giải quyết vấn đề.

  • Khởi tạo bit hai biến và cho kết quả tương ứng là 2 và 1.
  • Viết một vòng lặp lặp lại từ 1 đến n.
    • Cập nhật giá trị biến lặp lại bằng pow (2, bits) - 1) * (pow (2, bits - 1).
    • Nếu biến lặp nhỏ hơn n, thì cập nhật kết quả với i.
    • Tăng số lượng bit.
  • Trả lại resutl.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
long long getTheNumber(long long n) {
   long bits = 2;
   long long result = 1;
   long long i = 1;
   while (i < n) {
      i = (int)(pow(2, bits) - 1) * (pow(2, bits - 1));
      if (i < n) {
         result = i;
      }
      bits++;
   }
   return result;
}
int main() {
   long long n = 654;
   cout << getTheNumber(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.

496

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.