nixp.ru v3.0

21 января 2017,
суббота,
03:11:58 MSK

DevOps с компанией «Флант»
i-zoom написал 27 апреля 2006 года в 19:52 (311 просмотр) Ведет себя неопределенно; открыл 10 тем в форуме, оставил 8 комментариев на сайте.

Наверно детский вопрос, но всё же …

как сделать на С ? получаю какое либо число … скажем 273, требуется узнать , каие биты в представлении данного числа в двоичном виде, установлены в 1.

Longobard

Маску наложи с помощью &

i-zoom
LONGOBARD
Маску наложи с помощью &

и что ?

Feuerbach


unsigned n = 273, i = 0;
while (n)
{
    if (n & 1)
        printf("%d bit is set\n", i);
    n >>= 1;
    i++;
}
Longobard

Feuerbach правильно написал :)

Но обычно задача стоит как «проверить, установлен ли бит такой-то».

Тогда просто делаешь & с маской и переменной. Если вернет 1 — то бит установлен, если 0 — не установлен :)

В общем читай любую книгу по сям в разделе «побитовые операции»

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.