简体   繁体   中英

How to set multiple bits in one line in C?

I'd write two lines to set, say, some bits to something. Here, for example, I want to set upper 8 bits in uint16_t value x to y's lower 8 bits.

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

I want to have x:

assert(x == 0x3412);

I tend to write these two lines:

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

Is there a way of writing a single line to achieve the same effect without using macro?

Just expand out the two lines:

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

// and combine

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM