如何将一个字节分成 2 个一组,然后使用 C 轮换它们?

How do you split a byte into sets of 2 and then rotate them using C?

我目前正在学习 C 中的按位运算

给定一个字节(为了便于阅读而留出空间):11 01 11 10

必须变成:10 11 01 11

我该怎么做?

掩码和移位:

int a = 0b11011110;
int b = ((a & 0b11000000) >> 6) |
        ((a & 0b00110000) >> 2) |
        ((a & 0b00001100) << 2) |
        ((a & 0b00000011) << 6);

我在这里使用了二进制常量,但在 "real life" 中,您会更频繁地看到十六进制 - 使用对您的用例最有意义和最易读的那个。

int b = ((a & 0xc0) >> 6) |
        ((a & 0x30) >> 2) |
        ((a & 0x0c) << 2) |
        ((a & 0x03) << 6);