Поменять местами каждую пару битов в байтах

Это был вопрос, заданный представителем NVIDIA на ярмарке вакансий:

Напишите небольшой эффективный код, чтобы поменять местами каждую пару бит внутри байт; например, 10 11 01 10 должно стать 01 11 10 01 .

Есть ли более "эффективный" способ сделать это, чем выполнение цикла for любой другой индекс? Мой код был маленьким, но я не могу представить, насколько это может быть более "эффективным", чем цикл ... Я предполагаю, что есть способ использовать XOR, чтобы избежать цикла, но я не могу разберись.

Спасибо!

7
задан Mehrdad 25 January 2011 в 00:36
поделиться