문자열을 저장하는값은 저번에 자료형에 대해서 배울때도 봤듯이 char 입니다.
근데 컴퓨터에서는 모든것을 0과 1로 저장하면서 어떻게 문자를 저장할수 있을까요?
그건 바로 숫자마다 어떤 문자인지 정해져있기 때문입니다.
문자마다 번호를 정해놓고 사용하는것이죠.
c 변수에 'a'라는 문자를 넣고 서식문자 %c로 출력하면 문자로 출력되지만 %d를 통해 정수로 출력해주면 97이 나옵니다.
물론 거꾸로도 가능합니다.
'a'대신 97을 넣어봐도 똑같은 결과가 나왔습니다.
97을 넣든 'a'를 넣든 똑같은 의미입니다. 아까 말했듯이 문자마다 특별한 번호가 붙어있습니다.
a의 번호는 97번이라는 뜻이 되겠죠.
그 문자의 정해진 번호를 아스키코드라고 합니다. 이것은 그 번호를 정리해놓은 표입니다.
참고로 HEX는 16진수입니다. 2진수와 10진수처럼 16진수는 16가지 숫자를 사용합니다
10까지는 똑같고 11은 A 12는 B 13은 C 이런식으로 알파벳을 이용합니다
그리고 16진수 앞에는 0x를 사용합니다.
이런식으로 앞에 0x를 붙이고 숫자를 넣으면 16진수로 인식해줍니다.
2진수때와 마찬가지로 16에 자릿수를 제곱하고 거기에 숫자를 곱해주시면 각 자리가 가진 10진수값이 나옵니다.
21 을 10진수로 바꿔주려면 (2 * 16^1) + (1 * 16^0) 를 해주면 됩니다. 그래서 21은 33이됩니다.
만약 아스키코드를 외우겠다면 16진수로 외우는편이 쉬울수 있습니다.
16진수의경우 '0'은 0x30이고 '1'은 0x31입니다. 16진수일경우 뒷자리수가 문자와 같죠.
알파벳도 마찬가지입니다. A 는 0x41 이고 B는 0x42입니다. 뒷자리 수를 보면 1부터 시작하죠. 소문자 a도 0x61부터 시작합니다.
16진수로 외울경우 알파벳과 숫자를 외울때 앞자리만 외워두면 알파벳과 숫자는 바로 외워지는겁니다.
(외우라는 의미는 아닙니다. 굳이 외울 필요 없이 필요할때 찾아봐도 상관 없습니다)
'프로그래밍 > C 기초' 카테고리의 다른 글
[C언어 강좌] #18 - 함수 (0) | 2016.12.24 |
---|---|
[C언어 강좌] #17 - 문자열과 배열 (0) | 2016.12.23 |
[C언어 강좌] #15 - 다차원 배열 (0) | 2016.12.21 |
[C언어 강좌] #14 - 배열 (0) | 2016.12.20 |
[C언어 강좌] #13 - 지역변수 (0) | 2016.12.19 |