신기한 것 발견 ...

조회 수 1230 추천 수 0 2010.03.03 18:04:07

 

가끔 이렇게 신기한거 발견하고, 그냥 넘어갈때가 많은데 ...

물어볼 고수분들이 있으니 ... 좋네요 ㅋㅋㅋ

 

if(szResult[nPos] < 0xcc || 0xf6 < szResult[nPos])
or
if((szResult[nPos] & 0xff) < 0xcc || 0xf6 < (szResult[nPos] & 0xff))

 

어떤 값을 받아서 처리하는데 ...

 

if(szResult[nPos] < 0xcc || 0xf6 < szResult[nPos])

위 처럼 하면 false 임에도 불구하고 true 가 되고,

 

if((szResult[nPos] & 0xff) < 0xcc || 0xf6 < (szResult[nPos] & 0xff))

 

이렇게 처리하면 제대로 나옵니다 ...

원래 szResult[nPos] 에는 1 byte의 값이 들어가 있습니다.

저 & 연산을 해주면, 뭐가 어떻게 바뀌길래 그런건가요 ??? (매우 신기하네요 ㅋ)

 

또 (szResult[nPos] & 0x0ff)  or   szResult[nPos] & 0xff

위의 2개도 서로 값이 다르게 나올때도 있고, 그러던데 이유가 뭔가요 ?

 

개발 환경은 SUN SPARC 10 입니다(Big Endian)

 

 


김남형

2010.03.03 19:30:30
*.176.77.159

szResult가 char 타입의 배열이라면

sign extension에 의한 문제일 것입니다.

이상훈

2010.03.03 20:22:14
*.36.40.20

생각해보니까 그렇네요 ... 1byte 만땅 0xff의 반쪼가리가 0x80 이니까

요 범위 이상부터는 전부다 Overflow에 의해서 값이 바뀌겠군요 ?!

List of Articles
번호 제목 글쓴이 날짜 조회 수
102 Linker Script부분과 종합된 질문 [4] 이상훈 2010-03-17 1037
101 sbrk() 의 정확한 역할 ... [3] 이상훈 2010-03-17 1072
100 엄청난 오개념 [4] 이상훈 2010-03-16 986
99 커널 스터디 관련 질문입니다. [1] 이준명 2010-03-16 965
98 용어적인 질문 [2] 이상훈 2010-03-16 938
97 spin_lock , zone, cgroup 에 관한질문.. [4] 강진성 2010-03-13 1088
96 환경 변수 설정관련 질문 ... [3] 이상훈 2010-03-11 969
95 네트워크 인터페이스 할당 변경에 관련하여 문의드립니다. [3] 송인재 2010-03-10 1025
94 percpu_read 와 __attribute__(__section__) [5] 이상훈 2010-03-08 1123
93 cpu_number 정의가 어디있는건가요 ? [2] 이상훈 2010-03-07 1002
92 add_preempt_count() 에 대해서 ... [3] 이상훈 2010-03-07 1043
91 기계어 질문 [7] 이상훈 2010-03-06 1072
90 스터디 시간 좀 늦춰주실 수 없나요 ? [3] 이상훈 2010-03-06 956
89 백창우님 질문입니다 [4] 이상훈 2010-03-06 1103
88 __ASSEMBLY__ 의 의미는 무엇인가요 ? [2] 이상훈 2010-03-05 1122
» 신기한 것 발견 ... [2] 이상훈 2010-03-03 1230
86 제일 궁금한부분입니다 ㅡ_ㅡ;;; [2] 이상훈 2010-03-03 998
85 질문입니다 [2] 이상훈 2010-03-02 1019
84 $(TOPDIR)/Makefile 질문 [4] 이상훈 2010-03-02 1044
83 모듈 단위로 분석하는 것의 한계점 [5] Linux 2010-02-28 1053



XE Login