Найти количество значащих бит в числе

мне нужно указать количество бит числа в десятичной системе счисления для bitset, но я не знаю заранее какое будет число. Я пробовал через log2(x)+1, но оно вертает значение double, sizeof(int) но оно даёт только 4 бита, вот моя функция:

void to_binary(int n)
{
string binary = bitset<sizeof(int)>(n).to_string();
cout<<binary;
}

Ответы (2 шт):

Автор решения: Harry

По-моему, вы хотите что-то вроде этого:

void to_binary(unsigned int n)
{
    if (n == 0) cout << "0" ; else
    {
        string binary;
        while(n)
        {
            binary = char('0' + n%2) + binary;
            n >>= 1;
        }
        cout << binary;
    }
}

Нет?

→ Ссылка
Автор решения: Фыхфыхфхы
unsigned int count_bits( unsigned int x )
{
 unsigned int count = 0;
 for ( unsigned int i = 0; i < sizeof(x) * CHAR_BIT; ++i)
 {
   count += (x>>i) & 1;
 }
 return count;
}
→ Ссылка