С учетом целого без знака, я должен выполнить следующие операции:
- Подсчитать количество битов, установленных на 1
- Найти индекс самого левого 1 бита
- Найти индекс самого правого 1 бита
(операция не должна быть зависимой от архитектуры).
Я сделал это с помощью побитового сдвига, но мне нужно перебирать почти все биты (es.32).
Например, считая 1:
unsigned int number= ...;
while(number != 0){
if ((number & 0x01) != 0)
++count;
number >>=1;
}
Другие операции аналогичны.
Итак, мой вопрос: есть ли более быстрый способ сделать это?