Найти n-й бит SET в int

Вместо самого низкого установленного бита я хочу найти положение младшего установленного бита n . (Я НЕ говорю о значении в n -й позиции бита)

Например, скажем, у меня есть:
0000 1101 1000 0100 1100 1000 1010 0000

И я хочу найти 4-й установленный бит. Затем я хочу, чтобы он возвращал:
0000 0000 0000 0000 0100 0000 0000 0000

Если popcnt (v) , было бы разумно, если бы эта функция вернула 0 , но для меня приемлемо любое поведение в этом случае.

Я ищу что-нибудь более быстрое, чем петля, если возможно.

20
задан VoidStar 6 October 2011 в 00:11
поделиться