출처 : http://blog.daum.net/natural_feel/4788772
0x80 에 대하여 ((c & 0x80)에 대하여)
0x80은 아래의 조건식에서 왜 사용되었을까라는 의문을 가지게 되면서 찾아보았다.
((c & 0x80) != 0)
위의 식은 임의의 문자 C(알파벳 c가 아닌 변수명이다)가 한글인지 아닌지를 판단하는 조건식의 일부이다. c & 0x80 이 0이라면, 한글이 아닌것이고 0이 아니라면 한글인것이다.
참고 : & 연산자 ( a & b 은 같은자리의 비트가 둘다 1일때 그 자리에 1을 표시한다, a는 1000 b는
1110 이라면 a&b는 1000이 된다)
한글코드는 0x80 이상의 값을 가지고 있다. 0x80을 2진수로 바꾸주면 1000 0000 이 된다. 연산자 &를 사용해서 임의의 문자 c가 0x80이상인지를 확인하는것이다.
c가 0x80 이상이라면, 1000 0000 보다 더 큰수(예를 들면, 1001 1100)이기 때문에 c & 0x80은 1000 0000 이 된다.
c가 0x80 이하이라면, 1000 0000 보다 더 작은수(0111 1011)이기 때문에 c & 0x80은 0000 0000 즉 0이된다.
그래서 (c & 0x80) 가 0이면 한글이 아닌것이고, (c & 0x80)가 0이 아니면 한글인것이다.
(주의할 점은 한글은 2byte 문자라는 점, 즉 1111 1111 보다 더 큰수를 생각할 필요는 없다)
---------------------------------------------------------------------------------------------------
뿐만 아니라 0x80은 8bit의 내용을 파악하는데 사용되기도 한다.
아래의 설명을 보면 쉽게 이해가 간다.
d= a & c;
if (d != 0)
printf("1");
else
printf("0");
'컴퓨터 > C_Programing' 카테고리의 다른 글
Visual Studio 2013 _CRT_SECURE_NO_WARNINGS 경고 없애기 (0) | 2016.01.17 |
---|---|
visual studio 200x 버전 C4996 경고 (0) | 2016.01.17 |
함수 포인터 / typedef 선언 함수 포인터 (0) | 2016.01.17 |
포인터배열 / 배열포인터 차이 (0) | 2016.01.17 |
visual studio(VS) 6.0 에서 스택 크기/사이즈 변경 (0) | 2016.01.17 |