Найти количество значащих бит в числе
мне нужно указать количество бит числа в десятичной системе счисления для 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;
}