Как я могу получить позицию наименее значимого бита в числе?

Я работаю над проектом программирования, и одна из вещей, которую мне нужно сделать, это написать функцию, которая возвращает маску, которая отмечает позицию наименее значимого 1 бит. Любые идеи о том, как я могу определить позицию с помощью побитовых операторов?

ex: 
0000 0000 0000 0000 0000 0000 0110 0000 = 96
What can I do with the # 96 to turn it into:
0000 0000 0000 0000 0000 0000 0010 0000 = 32

Я часами ударил головой о стену, пытаясь понять, что любая помощь будет очень признательна!

Ответы

Ответ 1

x &= -x; /* clears all but the lowest bit of x */

Ответ 2

Более читаемый код:

int leastSignificantBit(int number)
{
    int index = 0;

    while ((~number) & 1) {
        number >>= 1;
        index++;
    }
    return 1 << index;
}