Здравствуйте, GrigArsh, Вы писали:
GA>Как узнать, сколько 1 в двоичном коде целого числа из диапазона [0 65535]
Мне в голову другого способа "узнать" кроме как "посчитать" не приходит...
Например, так:
unsigned short num = ... //исследуемое число
int count = 0; //счётчик
for(; num; num >>= 1)
count += num&1;
Здравствуйте, GrigArsh, Вы писали:
GA>Как узнать, сколько 1 в двоичном коде целого числа из диапазона [0 65535]
int f(int n)
{
static a[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 5};
return a[n & 0xff] + a[(n >> 8) & 0xff];
}
Примерно так...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, olexandr, Вы писали:
O>Здравствуйте, GrigArsh, Вы писали:
GA>>Как узнать, сколько 1 в двоичном коде целого числа из диапазона [0 65535]
O>O>int f(int n)
O>{
O> static a[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 5};
O> return a[n & 0xff] + a[(n >> 8) & 0xff];
O>}
O>
O>Примерно так...
Сорри, не так
Не проснулся еще...
int f(int n)
{
static a[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};
return a[n & 0xf] + a[(n >> 4) & 0xf] + a[(n >> 8) & 0x0f] + a[(n >> 12) & 0x0f];
}
То что в return можно циклом оформить
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, GrigArsh, Вы писали:
GA>Как узнать, сколько 1 в двоичном коде целого числа из диапазона [0 65535]
для 32 и 8 битового числа было подробнейшим образом вот
тутАвтор: DemAS
Дата: 16.05.03
объяснено.
Здравствуйте, GrigArsh, Вы писали:
GA>Как узнать, сколько 1 в двоичном коде целого числа из диапазона [0 65535]
Вам надо "Hacker's delight / Henry S. Warren, Jr." покурить. Там подобных алгоритмов (битовые операции) — уйма. Все разжевано. Исключительно полезная книга. Есть и на русском.
[EOF]
Здравствуйте, GrigArsh, Вы писали:
GA>Как узнать, сколько 1 в двоичном коде целого числа из диапазона [0 65535]
Классическая ссылка