Я пытаюсь улучшить вопросы о стиле интервью. Я наткнулся на это:Пожалуйста, объясните этот код обмена битами (Java)
Учитывая 32-битный целочисленный ввод x, замените его нечетные и четные биты и верните полученное целое число. (например, бит 0 и бит 1 заменяются, бит 2 и бит 3 заменяются и т. д.). Например: х = 5, двоичный код = 0101 swapOddEvenBits (5) -> 10
Ответ был следующим:
public int swapOddEvenBits(int x) {
return (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
}
Может кто-то объяснить это, пожалуйста. Кроме того, почему я не могу использовать что-то вроде (x & 1010101010101) >> 1 вместо этого? Моя первоначальная попытка решить эту задачу состояла в том, чтобы преобразовать int в двоичные строки, а затем заменить соседние символы, а затем преобразовать обратно в int. Будет ли это работать? Спасибо.
Благодарим вас за разъяснение. – Raul