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

Tìm số lượng bit 1 trong một số nhị phân lớn trong C ++

Cho một Số nhị phân không dấu 32 bit, nhiệm vụ là đếm các bit đã đặt, tức là '1 có trong nó.

Ví dụ

Đầu vào:

N = 00000000000000100111

Đầu ra:

4

Giải thích: Tổng số bit tập hợp có trong số không dấu đã cho là 4, do đó chúng tôi sẽ trả về đầu ra là '4'.

Phương pháp tiếp cận để giải quyết vấn đề này

Chúng tôi đã đưa ra một số nhị phân 32 bit không dấu. Nhiệm vụ là đếm xem có bao nhiêu '1 trong đó.

Để đếm số '1 có trong số nhị phân đã cho, chúng ta có thể sử dụng hàm STL có sẵn' __builin_popcount (n) 'lấy một số nhị phân làm tham số đầu vào.

  • Lấy một số nhị phân N làm đầu vào.
  • Một hàm count1Bit (uint32_t n) lấy một số nhị phân 32 bit làm đầu vào và trả về số lượng '1' có trong số nhị phân.
  • Hàm có sẵn __builtin_popcount (n) nhận đầu vào của 'n' làm tham số và trả về số lượng.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
int count1bits(uint32_t n) {
   return bitset < 32 > (n).count();
}
int main() {
   uint32_t N = 0000000010100000011;
   cout << count1bits(N) << endl;
   return 0;
}

Chạy đoạn mã trên sẽ tạo ra kết quả là,

Đầu ra

4

Trong số đã cho, có 4 bit đặt hoặc '1s' có trong nó. Vì vậy, đầu ra là '4'.