Ответ 1
x &= -x; /* clears all but the lowest bit of x */
Я работаю над проектом программирования, и одна из вещей, которую мне нужно сделать, это написать функцию, которая возвращает маску, которая отмечает позицию наименее значимого 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
Я часами ударил головой о стену, пытаясь понять, что любая помощь будет очень признательна!
x &= -x; /* clears all but the lowest bit of x */
Более читаемый код:
int leastSignificantBit(int number)
{
int index = 0;
while ((~number) & 1) {
number >>= 1;
index++;
}
return 1 << index;
}