Я работаю над проблемой из Cracking The Coding Interview, которая требует, чтобы я менял местами нечетные и четные биты в целом числе с помощью как можно меньшего количества инструкций (например, бит 0 и 1 меняются местами, биты 2 и 3 меняются местами и т. д.)
Решение автора вращается вокруг использования маски для захвата в одном числе нечетных битов и в другом числе четных битов, а затем сдвига их на 1.
Я понял ее решение, но не понимаю, как она схватила четные/нечетные биты. Она создает две битовые маски — обе в шестнадцатеричном формате — для 32-битного целого числа. Два: 0xaaaaaaaa и 0x55555555. Я понимаю, что она, по сути, создает эквивалент 1010101010... для 32-битного целого числа в шестнадцатеричном виде, а затем объединяет его с исходным числом, чтобы получить четные/нечетные биты соответственно.
Чего я не понимаю, так это почему она использовала гекс? Почему бы просто не написать 10101010101010101010101010101010? Использовала ли она шестнадцатеричный код, чтобы уменьшить многословие? И когда вы должны использовать один над другим?