forked from 131/lab3_test
24 lines
741 B
C
24 lines
741 B
C
#include "bit_lib.h"
|
|
|
|
int bit_count(unsigned int number)
|
|
{
|
|
int count = 0;
|
|
|
|
// Цикл продолжается, пока в 'number' есть хотя бы один единичный бит
|
|
while (number > 0) {
|
|
// (number & 1) проверяет, является ли *последний* бит единицей.
|
|
// (1 & 1) -> 1
|
|
// (0 & 1) -> 0
|
|
if ((number & 1) == 1) {
|
|
count++;
|
|
}
|
|
|
|
// >> 1 — это побитовый сдвиг вправо.
|
|
// Он "отбрасывает" последний бит и сдвигает все остальные.
|
|
// 1011 (11) >> 1 станет 0101 (5)
|
|
number = number >> 1;
|
|
}
|
|
|
|
return count;
|
|
}
|