Взлом битов: расширение битов

Я пытаюсь преобразоватьuint16_t вход вuint32_t немного маски Один бит на входе переключает два бита в выходной битовой маске. Вот пример преобразования 4-битного ввода в 8-битную маску:

Input    Output
ABCDb -> AABB CCDDb

A,B,C,D are individual bits

Example outputs:

0000b -> 0000 0000b
0001b -> 0000 0011b
0010b -> 0000 1100b
0011b -> 0000 1111b
....
1100b -> 1111 0000b
1101b -> 1111 0011b
1110b -> 1111 1100b
1111b -> 1111 1111b

Есть ли хитрый способ добиться такого поведения?

Ответы на вопрос(8)

Ваш ответ на вопрос