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

C / C ++ Chương trình đếm số bit thiết lập trong một số nguyên?

Đếm số bit đặt có nghĩa là đếm 1’S của số nguyên đã cho. Đối với điều này, chúng tôi có nhiều giải pháp có thể được áp dụng. Đối với trường hợp này, chúng tôi có một số nhị phân (đại diện nhị phân của một số nguyên), mà chúng tôi phải đếm số lượng 1 trong chuỗi.

Để đếm số lượng 1, chúng tôi sẽ lấy chuỗi, duyệt qua từng phần tử và đếm tất cả các 1 của chuỗi. Ví dụ:nếu chúng ta nhập 17, đầu ra sẽ là 2 vì nhị phân của 17 là 10001 chứa hai chữ 1.

Input: Enter a positive integer: 6
Output: 2

Giải thích

Biểu diễn nhị phân của 6 là 110 có 2 bit đặt

Cách tiếp cận lặp đi lặp lại này yêu cầu một lần lặp trên mỗi bit. Nó chạy qua tất cả các bit của số. Lặp lại chấm dứt khi không có thêm bit nào được thiết lập. Trong trường hợp xấu nhất, trên một từ 32 bit chỉ có bộ bit quan trọng nhất, nó sẽ lặp qua 32 lần lặp. Giải pháp này là giải pháp đơn giản nhất và hữu ích nếu 1 là thưa thớt và nằm trong số các bit ít quan trọng nhất.

Ví dụ

#include <stdio.h>
int main(void) {
   unsigned int n = 34;
   for (c = 0; n; n >>= 1) {
      c += n & 1;
   }
   printf("%d\n", c);
}