【问题标题】:How to set multiple bits in one line in C?如何在C中的一行中设置多个位?
【发布时间】:2014-02-14 18:28:03
【问题描述】:

我会写两行来设置,比如说,一些位。在这里,例如,我想将 uint16_t 值 x 的高 8 位设置为 y 的低 8 位。

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

我想要x:

assert(x == 0x3412);

我倾向于写这两行:

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

有没有不用宏写单行也能达到同样效果的方法?

【问题讨论】:

  • x = (x &amp; 0xFF) | (y &lt;&lt; 8);

标签: c bit-manipulation


【解决方案1】:

只需展开两行:

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

// and combine

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

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多