How to set multiple bits in one line in C?

拜拜、爱过 提交于 2019-12-19 09:52:14

问题


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?


回答1:


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);


来源:https://stackoverflow.com/questions/21786843/how-to-set-multiple-bits-in-one-line-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!