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

Số lớn nhất nhỏ hơn X có nhiều nhất K bit được thiết lập 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 nhỏ hơn x đã cho và phải có nhiều nhất k bit.

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

  • Khởi tạo các số x và k.
  • Tìm các bit đã đặt trong số x.
  • Viết một vòng lặp lặp lại số bit đã đặt là x - k.
    • Cập nhật giá trị của x với x &(x - 1).
  • Trả về x.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
int largestNumberWithKBits(int x, int k) {
   int set_bit_count = __builtin_popcount(x);
   if (set_bit_count <= k) {
      return x;
   }
   int diff = set_bit_count - k;
   for (int i = 0; i < diff; i++) {
      x &= (x - 1);
   }
   return x;
}
int main() {
   int x = 65, k = 2;
   cout << largestNumberWithKBits(x, k) << 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.

65

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.