2014-02-14 2 views
1

뭔가를 말하기 위해 두 줄을 써야 겠어. 예를 들어, uint16_t 값 x에서 상위 8 비트를 y의 하위 8 비트로 설정하려고합니다.C에서 한 줄에 여러 비트를 설정하는 방법은 무엇입니까?

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

내가 갖고 싶어 X :

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

없이 동일한 효과를 달성하기 위해 한 줄을 작성하는 방법이 있나요 : 나는이 두 라인을 작성하는 경향이

assert(x == 0x3412); 

매크로 사용?

+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); 
관련 문제