도구상자FREE ONLINE TOOLS
← 가이드 목록

아스키(ASCII) 코드란 — 문자와 숫자의 약속

컴퓨터는 글자를 그대로 저장하지 못합니다 — 안에서는 모든 것이 숫자(0과 1)일 뿐입니다. 그래서 "어떤 글자를 어떤 숫자로 부를지"를 미리 약속해 둬야 하는데, 그 약속의 원조가 바로 아스키(ASCII)입니다. 영문자·숫자·기호를 0~127번의 숫자에 짝지은 표라고 보면 됩니다.

아스키 = 문자와 숫자의 약속

아스키(ASCII, American Standard Code for Information Interchange)는 1960년대에 만들어진 문자 인코딩 표준입니다. 7비트로 표현 가능한 128개(0~127)의 숫자 각각에 문자를 하나씩 배정했습니다. 예를 들어 키보드에서 대문자 A를 누르면 컴퓨터는 그것을 숫자 65로 저장하고, 화면에 다시 그릴 때는 65를 보고 "A"를 그립니다. 같은 약속을 모두가 쓰기 때문에 서로 다른 기기끼리도 글자가 깨지지 않고 오갑니다.

제어문자와 출력문자

128개 코드는 성격에 따라 두 무리로 나뉩니다.

구간종류예시
0 ~ 31제어문자줄바꿈(LF=10), 캐리지리턴(CR=13), 탭(9), 널(0)
32공백스페이스(Space)
33 ~ 126출력문자! " # … 숫자 · 알파벳 · 기호
127제어문자삭제(DEL)

제어문자는 화면에 글자로 보이지 않고 동작을 지시합니다 — 줄을 바꾸거나, 탭만큼 띄거나, 문자열의 끝을 표시하는 식입니다. 윈도우는 줄 끝을 CR+LF 두 개로, 맥·리눅스는 LF 하나로 쓰는데, 이 차이가 코드값으로 보면 13과 10의 조합 차이입니다. 출력문자는 눈에 보이는 글자와 기호 전부입니다.

기억해 둘 핵심 값

문자10진수16진수
'0' (숫자 영)480x30
'9'570x39
'A'650x41
'Z'900x5A
'a'970x61
'z'1220x7A

여기서 가장 유용한 규칙은 소문자 = 대문자 + 32입니다. 'A'(65)에 32를 더하면 'a'(97), 'Z'(90)에 더하면 'z'(122)가 됩니다. 그래서 코드값에 32를 더하고 빼는 것만으로 대소문자를 바꿀 수 있습니다. 또 숫자 문자 '0'이 48이라는 점도 알아두면 좋습니다 — 문자 '7'에서 48을 빼면 진짜 숫자 7이 됩니다.

16진수가 자주 보이는 이유: 코드값은 흔히 16진수로 표기됩니다(예: 0x41). 16진수는 1바이트를 두 자리로 깔끔히 나타내고 2진수와 변환이 쉬워서, 프로그래밍·메모리 덤프에서 표준처럼 쓰입니다. 10진수와 16진수가 헷갈리면 아스키 코드표에서 두 표기를 나란히 확인할 수 있습니다.

아스키의 한계와 유니코드

아스키는 영어를 위한 표라서 한글·한자·이모지를 담을 자리가 없습니다. 128칸이 영문자와 기호로 이미 다 찼기 때문입니다. 이 한계를 넘기 위해 등장한 것이 유니코드(Unicode)입니다. 유니코드는 전 세계 문자에 고유 번호를 부여해, 한글 '가'는 44032번, 웃는 이모지도 각자의 번호를 가집니다.

중요한 점은 유니코드가 아스키를 버리지 않고 그대로 품었다는 것입니다 — 유니코드의 0~127번은 아스키와 완전히 같습니다. 그래서 영문만 있는 텍스트는 아스키든 UTF-8이든 동일하게 읽히고, 호환이 깨지지 않습니다.

아스키 코드표문자↔코드값(10·16진수) 조회·변환 표 보기 →
자주 묻는 질문
Q. 아스키 코드는 왜 0~127까지만 있나요?

초기 아스키는 7비트로 설계됐기 때문입니다. 7비트로 표현할 수 있는 경우의 수가 2의 7제곱, 즉 128개라서 0번부터 127번까지 문자를 배정했습니다. 영어 알파벳 대소문자, 숫자, 기본 기호, 제어문자를 담기에는 충분했지만 다른 언어의 글자는 들어갈 자리가 없었습니다. 이후 1바이트(8비트)로 늘리며 128~255를 추가한 확장 아스키가 나왔고, 더 많은 문자를 담기 위해 유니코드로 확장됐습니다.

Q. 대문자와 소문자 코드는 어떤 관계인가요?

같은 알파벳의 소문자 코드는 대문자보다 정확히 32 큽니다. 'A'는 65, 'a'는 97이고 그 차이가 32입니다. 그래서 프로그램에서 대소문자를 바꿀 때 코드값에 32를 더하거나 빼는 방식이 쓰이기도 합니다. 32는 2진수로 보면 한 비트만 다른 값이라, 그 비트 하나로 대소문자가 갈린다고 이해해도 됩니다.

Q. 줄바꿈도 아스키 코드인가요?

네, 줄바꿈은 화면에 글자로 보이지 않는 제어문자입니다. 줄 바꿈(LF)은 10번, 캐리지 리턴(CR)은 13번 코드입니다. 윈도우는 줄 끝을 CR과 LF 두 개로, 맥·리눅스는 LF 하나로 표시해서, 같은 텍스트라도 줄바꿈 방식이 달라 호환 문제가 생기기도 합니다. 탭(9번)이나 종료를 뜻하는 널 문자(0번)도 모두 0~31번 구간의 제어문자입니다.

함께 보면 좋은 가이드