아스키코드 표
C언어 char 문자형 등에서 사용되는 아스키코드 표의 0 ~ 127번까지 해당되는
문자는 아래 표처럼 정리할 수 있습니다.
이중 높은 빈도로 사용되는 문자들은 색깔로 표시해두었는데요.
크게 순서를 정리하면
제어문자 < 숫자 < 영어대문자 < 영어소문자
순서로 위치하고 있는 것을 확인하실 수 있습니다.
이 외에 다른 문자들은 군데군데 사이에 껴있기는 하지만,
비교에서 높은 빈도로 사용되지는 않기에 유의미하게 기억해두실 필요는 없습니다.
0~32번까지는 제어문자라고 특수 기능을 하는 문자들이 매칭되어 있습니다.
물론, 이 문자들에서도 특수 문자를 따로 매칭해주어 출력이 가능하게 해주는 경우도
있다는 점을 참고해주세요.
문자열의 끝을 의미하는 NULL문자는 0번,
공백은 32번에 위치하고 있음을 주목해주세요.
이는 문자열 대소비교에서 빈 문자가 작은쪽에 위치하게 만들어주는
중요한 기능을 수행합니다.
문자열 대소 비교
위의 표를 보시면 A ~ Z 순서로 1씩 증가하는 위치에 매핑된 것을 확인할 수 있고요.
대문자 A는 65, 소문자 a는 97에서 시작하고 있습니다. 이 둘은 정확히 32가 차이나네요.
또한, 숫자를 저장하는 문자열 '0' ~ '9'도 1씩 증가하는 위치에 매핑되어있습니다.
문자열을 비교하는 원리는 간단합니다.
첫 글자부터 비교하며 양쪽의 글자가 다른 경우 아스키 코드 값이 더 큰쪽이
큰 문자로 판명되는 원리입니다.
여기서 주의하실 점은 숫자의 경우 '20'이 '123' 보다 클 수 있다는 점입니다.
첫 글자부터 비교하는 원리를 생각하시면 이해가 쉬울 것입니다.
또한, NULL문자는 0의 값에 매칭되므로, 한 쪽의 글자가 비어있다면 무조건
해당 문자열이 작은 쪽으로 판명되는 원리를 이해하기 쉽습니다.
한글은 아스키 코드에 없나요?
한글이나 다른 특수 문자들을 모두 7비트의 아스키 코드에는 표현할 수 없습니다.
이를 위해 1바이트보다 훨씬 큰 공간에 문자열을 매핑하는 cp949, utf-8의 유니코드 방식이
고안되었습니다.
특히, utf-8 등의 유니코드 방식은 아스키 코드의 값을 그대로 보존하여 사용 가능해
인코딩 때 깨짐현상 등이 덜합니다.