2012-03-05 4 views
1

하나의 바이트에 두 개의 4 비트 정수 (1,4,7 .....)를 저장하고 싶습니다.두 개의 정수를 하나의 단일 바이트로 저장하십시오.

나는 2 개의 정수 a=0001b=1111을 가지고 있는데, 정수로 메모리에 하나의 단일 바이트로 저장하고 싶습니다.

아무도 도와 줄 수 있습니까?

+0

을 :

unsigned char number = (a << 4) | b; 

그리고 밖으로 다시 그들을 얻을 1111b 한 마스크, 다시 다른 이동하기 – Tod

답변

6

4 비트 중 하나를 비트 시프트 한 다음 2 진 OR을 사용해야합니다. (옛 사람을 적어도 우리에게) 참고로 4 비트 정수가 구어체 니블로 알려져있다

a = number >> 4; 
b = number & 15; 
+1

나는 대답을 +1하지만, OP가 많은 정보를 제공하지 않았 음을 지적하기를 원했기 때문에 unsigned short가 대상의 바이트라는 사실이 명확하지 않습니다. – Tod

+0

좋은 지적. 우리가 그가 사용하고있는 것을 추측하고 있지만,'char'는 아마 더 일반적 일 것입니다. – Rusty

+0

15 = 0xf (= dec : 15 = bin : "1111") – user3896501

관련 문제