Здравствуйте, Аноним, Вы писали:
B>>B>>unsigned int n = ...;
B>>n &= n-1;//Сбросить младший значащий бит
B>>
А>Вы не могли бы по подробнее обяснить эту строчку?n &= n-1
Развернутый код:
n = n & (n-1);
Комментарий: к числу применяется операция "битовое 'и'", при этом в качестве второго операнда используется разность этого же числа и единицы. Результат операции записывается в исходную переменную.
Пример в двоичном коде:
n = 6;// 00000110
n2 = n-1;// n2 == 5 == 00000101
n = n2 & n;
// 00000110
//&
// 00000101
//---------
// 00000100
Вроде достаточно подробно...