Код: Выделить всё
int solution(int n) {
int pivot = n & -n;
int before = ((n ^ (n + pivot)) / pivot) >> 2;
return (n + pivot) | before;
}
Может ли кто-нибудь объяснить, что это такое? выполняются операции и почему они необходимы в этом алгоритме?
Я понимаю, что делает точка поворота в следующем решении (она используется для изоляции младшего значащего набора битов n), и я также получить цель деления по оси — это настроить перевернутые биты до наименьшего битового значения. Однако меня смущает причина операции >> 2 (сдвиг вправо на 2) в этом коде
Подробнее здесь: https://stackoverflow.com/questions/792 ... her-number
Мобильная версия