[완료][재질문 수정]비트연산 질문입니다.
글쓴이: kkume / 작성시간: 화, 2009/02/03 - 3:49오후
char ch = 0x48;
이렇게 들어온 값이 있는데요..
MSB 4bit = 4, LSB 4bit = 8 이란 값을 어떻게 체크해야 하는지요?
추가질문:
char 1바이트에서 MSB 2개의 bit 값(b7, b6),
short 2바이트에서 MSB 2개의 bit 값(b15, b14),
int 4바이트에서 MSB 2개의 bit 값(b31, b30) 이 얼마인지 알려면 어떻게 체크해야 하나요?
아래 두 분 답변 감사합니다.
Forums:
(ch&0x0f) ==
(ch&0x0f) == 0x08
(ch&0xf0)>>4 == 0x04
c++이라면 #include
c++이라면
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
char ch은 char
char ch은 char type이므로 1 byte 즉, 8bit인데요.
그렇다면 MSB 4bit = 4, LSB 4bit = 8을 따로 check하는 것이 의미가 있나요?
char type의 MSB 4bit, LSB 4bit check는 그냥 값을 비교하면 될거 같아요
그냥 ch == 0x48 이렇게요.
그리고 각 data type의 MSB n bit 값을 아는 것은
#define GET_MSBNBIT(var, n, type)\
(var & ((2^n)-1) << (sizeof(type)*8 - n)) >> (sizeof(type)*8 - n)
이렇게 하면 될거 같은데요...
Test는 안 해봤어요...
맨 처음 질문에서요..
맨 처음 질문에서는요..
ch = 0x48 은 십진수로 72 이잖아요.. 그런데 쓸때에는 72를 쓰는 것이 아니라, MSB 4bit 값 0x04, LSB 4bit 값 0x08 이렇게 따로 사용하기 때문입니다.
그리고 두번째 추가 질문은
char 1바이트에서 MSB 2개의 bit 값(b7, b6),
short 2바이트에서 MSB 2개의 bit 값(b15, b14),
int 4바이트에서 MSB 2개의 bit 값(b31, b30) 이 얼마인지 알려면 어떻게 체크해야 하나요?
이와 같은 의미였습니다.
#define GET_MSG2BIT( var )
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기