Я знаю, что мы можем установить любой бит в байте с помощью логической операции ИЛИ и может очистить любой бит на логическое И как кпроверка количества бит в байтах?
val |= (1<<order_number_of_bit_to_set); //for setting some specific number of bit
и для очистки немного
val &= ~(1<<order_number_of_bit_to_clear); // specific bit to clear
но мой вопрос как мы можем проверить, сколько и какие упорядоченные биты номера заданы в байте.
, например, если мы имеем
val = 0x22;
это означает, что второй и пятый бит установлен в бай
, что является эффективным, быстрым и кратчайшим способом сделать это?
Быстрое решение, которое пришло в голову, - перебрать все биты и проверить их порядок, а также установить запись и отобразить порядок бит.
Но есть ли другой эффективный способ сделать это?
Если вам нужно знать не только количество установленных битов, но и позиции набора битов, тогда нет, нет лучшего способа, чем повторение через них. – us2012
http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer – chux
GCC имеет '__builtin_popcount *()', что может оптимизироваться на платформах с специализированными инструкциями. Кроме этого, это выглядит как [вопрос XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Зачем вам нужно знать положения бит? – DanielKO