2013-07-04 3 views
-3

이 바이트가 있습니다 : 10111011 그리고 2 니블 (msb 및 lsb)로 분할하고 싶습니다.
그 후 나는 LSB에서 마지막 2 비트를 가져 가고 싶습니다 (그래서 111011에서 원합니다).
내가 알고 : 10011011 >> 4

내가 MSB를 얻을 10011011 & 0xf로 (1001)
내가는 LSB (1011)

지금은 LSB 1011에서 11을 위해 할 수있는거야?C에서 니블의 마지막 2 비트 가져 오기

+3

동일한 방법을 사용 하시겠습니까? – banarun

+1

"문제는 해결되는 문제에 대한 최소한의 이해를 보여 주어야합니다 ..." –

답변

3

그냥 같은 : bits = lsb & 0x03

0

처음 두 비트의 비트 마스크는 너무 간단하게 사용, 3 :

int val = x & 3; 

비트가 적절한 위치에 이미 있기 때문에 당신이 어떤 변화를 필요가 없습니다 운영자.

위 값에 해당됩니다.

val = (x >> 4) & 3; 
0

당신은 할 거라고 : foo 당신이 마스크하고자하는 비트 패턴

foo & 0x03 

.