2014-02-14 13 views
1

我會寫兩行來設置一些東西。這裏,例如,我想將uint16_t值x中的高8位設置爲y的低8位。如何在C中的一行中設置多個位?

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

我想有X:

assert(x == 0x3412); 

我傾向於寫這兩行:

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

有沒有寫一行代碼的方式來達到同樣的效果,而不使用宏?

+5

'X =(X爲0xFF)| (y << 8);' – clcto

回答

9

只是擴大了兩行:

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

// and combine 

x = (x & 0xFF) | (y << 8); 
相關問題