如何在C中的一行中设置多个位?

时间:2014-02-14 18:28:03

标签: c bit-manipulation

我写了两行来设置,比方说,某些东西。这里,例如,我想将uint16_t值x中的高8位设置为y'低8位。

uint16_t y = 0x0034;
uint16_t x = 0xFF12;

我想要x:

assert(x == 0x3412);

我倾向于写下这两行:

x &= 0x00FF;
x |= (y << 8);

有没有一种方法可以在不使用宏的情况下编写单行来实现相同的效果?

1 个答案:

答案 0 :(得分:10)

只需展开两行:

x &= 0x00FF; // x = x & 0xFF
x |= (y<<8); // x = x | (y<<8)

// and combine

x = (x & 0xFF) | (y << 8);