Cho số nguyên num. Đếm độ dài biểu diễn nhị phân (số bit từ MSB 1 đến LSB).
Ví dụ: 50 (110010) → 6 bit; 10 (1010) → 4 bit.
Giải thuật: Dịch bit phải cho đến khi số bằng 0, đếm số lần dịch.
Ví dụ
#include <iostream>
using namespace std;
unsigned int bits(unsigned int number) {
unsigned int count = 0;
// Hiển thị 8-bit
for (unsigned i = 1 << 7; i > 0; i >>= 1)
cout << ((number & i) ? '1' : '0');
// Đếm tổng bit
while (number) {
count++;
number >>= 1;
}
cout << "\nCount: " << count;
return count;
}
int main() {
bits(50);
return 0;
}
Đầu ra
8-bit digits of 50 is: 00110010 Count of total bits in a number are: 6