ASCII
이 글은 제가 과거에 운영했던 사이트인 http://dotnet.mkexdev.net 의 글을 옮겨온 것입니다. 원본 글은 2008년 5월에 작성되었습니다.
그 전에 운영했었던 사이트(mkex.pe.kr)은 흔적도 없이 사라 졌습니다. 그속의 글들도 모두... 그래서 이 사이트도 사라지기 전에 옮기고 싶은 글을 조금씩 이 블로그로 이동시키려 합니다.
(원본글) http://dotnet.mkexdev.net/Article/Content.aspx?parentCategoryID=2&categoryID=9&ID=102
ASCII 정의
미국 정보 교환 표준 부호(American Standard Code for Information Interchange) 의 약자인 ASCII 는 영문 알파벳을 사용하는 대표적인 문자 인코딩(Encoding) 이다.
컴퓨터는 0과 1 로 구성된 진수밖에 인식하지 못한다.
이 말은 곧 컴퓨터는 숫자밖에 인식하지 못한다는 의미인 것이다.
그렇다면 컴퓨터에게 문자를 인식하도록 할려면???
그렇다. 숫자밖에 인식하지 못하는 컴퓨터에게 인간의 언어인 문자를 인식하도록 하려면 여전히 숫자를 사용할 수 밖에 없다.
그렇다면 숫자를 이용해서 문자를 표현하는 규칙이 있어야 한다.
즉 숫자 N 은 문자 X 와 일디일 매핑(mapping) 시키는 개념을 규칙화 시켜야 한다.
이러한 매핑 규칙을 정의해 놓은 것이 바로 ASCII 코드표 이다.
아래와 같은 코드를 보자
char c = ‘A’
내부적으로 c 에는 65 라는 정수가 저장된다.
ASCII 구성
총 128 개 (7비트로 표현 가능한 범위 , 2의 7승 = 128) 로 구성
33 개 : 출력 불가능한 제어 문자들
95 개 : 출력 가능한 문자(공백 포함)
52개 : 영문 알파벳 대소문자, 10개의 숫자, 32개의 특수문자, 1개의 공백문자
구분 | 개수 | 구간 | |||
출력 불가능 제어 문자 |
33 | 0 ~ 31 127 |
|||
출력 가능 문자(공백포함) |
95 | 32 ~ 126 | 구분 | 개수 | 구간 |
영문 | 52 | 65 ~ 90 (대문자) 97 ~ 122 (소문자) |
|||
특수문자 | 32 | 33 ~ 47 58 ~ 64 91 ~ 96 123 ~ 126 |
|||
숫자 | 10 | 48 ~ 57 | |||
공백문자 | 1 | 32 |
출력 가능한 95개 문자 (32 번 ~ 126 번)
ASCII 코드표
DEC | HEX | OCT | Char | DEC | HEX | OCT | Char | DEC | HEX | OCT | Char | ||
0 | 00 | 000 | Ctrl-@ NUL | 43 | 2B | 053 | + | 86 | 56 | 126 | V | ||
1 | 01 | 001 | Ctrl-A SOH | 44 | 2C | 054 | , | 87 | 57 | 127 | W | ||
2 | 02 | 002 | Ctrl-B STX | 45 | 2D | 055 | - | 88 | 58 | 130 | X | ||
3 | 03 | 003 | Ctrl-C ETX | 46 | 2E | 056 | . | 89 | 59 | 131 | Y | ||
4 | 04 | 004 | Ctrl-D EOT | 47 | 2F | 057 | / | 90 | 5A | 132 | Z | ||
5 | 05 | 005 | Ctrl-E ENQ | 48 | 30 | 060 | 0 | 91 | 5B | 133 | [ | ||
6 | 06 | 006 | Ctrl-F ACK | 49 | 31 | 061 | 1 | 92 | 5C | 134 | \ | ||
7 | 07 | 007 | Ctrl-G BEL | 50 | 32 | 062 | 2 | 93 | 5D | 135 | ] | ||
8 | 08 | 010 | Ctrl-H BS | 51 | 33 | 063 | 3 | 94 | 5E | 136 | ^ | ||
9 | 09 | 011 | Ctrl-I HT | 52 | 34 | 064 | 4 | 95 | 5F | 137 | _ | ||
10 | 0A | 012 | Ctrl-J LF | 53 | 35 | 065 | 5 | 96 | 60 | 140 | ` | ||
11 | 0B | 013 | Ctrl-K VT | 54 | 36 | 066 | 6 | 97 | 61 | 141 | a | ||
12 | 0C | 014 | Ctrl-L FF | 55 | 37 | 067 | 7 | 98 | 62 | 142 | b | ||
13 | 0D | 015 | Ctrl-M CR | 56 | 38 | 070 | 8 | 99 | 63 | 143 | c | ||
14 | 0E | 016 | Ctrl-N SO | 57 | 39 | 071 | 9 | 100 | 64 | 144 | d | ||
15 | 0F | 017 | Ctrl-O SI | 58 | 3A | 072 | : | 101 | 65 | 145 | e | ||
16 | 10 | 020 | Ctrl-P DLE | 59 | 3B | 073 | ; | 102 | 66 | 146 | f | ||
17 | 11 | 021 | Ctrl-Q DCI | 60 | 3C | 074 | < | 103 | 67 | 147 | g | ||
18 | 12 | 022 | Ctrl-R DC2 | 61 | 3D | 075 | = | 104 | 68 | 150 | h | ||
19 | 13 | 023 | Ctrl-S DC3 | 62 | 3E | 076 | > | 105 | 69 | 151 | i | ||
20 | 14 | 024 | Ctrl-T DC4 | 63 | 3F | 077 | ? | 106 | 6A | 152 | j | ||
21 | 15 | 025 | Ctrl-U NAK | 64 | 40 | 100 | @ | 107 | 6B | 153 | k | ||
22 | 16 | 026 | Ctrl-V SYN | 65 | 41 | 101 | A | 108 | 6C | 154 | l | ||
23 | 17 | 027 | Ctrl-W ETB | 66 | 42 | 102 | B | 109 | 6D | 155 | m | ||
24 | 18 | 030 | Ctrl-X CAN | 67 | 43 | 103 | C | 110 | 6E | 156 | n | ||
25 | 19 | 031 | Ctrl-Y EM | 68 | 44 | 104 | D | 111 | 6F | 157 | o | ||
26 | 1A | 032 | Ctrl-Z SUB | 69 | 45 | 105 | E | 112 | 70 | 160 | p | ||
27 | 1B | 033 | Ctrl-[ ESC | 70 | 46 | 106 | F | 113 | 71 | 161 | q | ||
28 | 1C | 034 | Ctrl-\ FS | 71 | 47 | 107 | G | 114 | 72 | 162 | r | ||
29 | 1D | 035 | Ctrl-] GS | 72 | 48 | 110 | H | 115 | 73 | 163 | s | ||
30 | 1E | 036 | Ctrl-^ RS | 73 | 49 | 111 | I | 116 | 74 | 164 | t | ||
31 | 1F | 037 | Ctrl_ US | 74 | 4A | 112 | J | 117 | 75 | 165 | u | ||
32 | 20 | 040 | Space | 75 | 4B | 113 | K | 118 | 76 | 166 | v | ||
33 | 21 | 041 | ! | 76 | 4C | 114 | L | 119 | 77 | 167 | w | ||
34 | 22 | 042 | " | 77 | 4D | 115 | M | 120 | 78 | 170 | x | ||
35 | 23 | 043 | # | 78 | 4E | 116 | N | 121 | 79 | 171 | y | ||
36 | 24 | 044 | $ | 79 | 4F | 117 | O | 122 | 7A | 172 | z | ||
37 | 25 | 045 | % | 80 | 50 | 120 | P | 123 | 7B | 173 | { | ||
38 | 26 | 046 | & | 81 | 51 | 121 | Q | 124 | 7C | 174 | | | ||
39 | 27 | 047 | ' | 82 | 52 | 122 | R | 125 | 7D | 175 | } | ||
40 | 28 | 050 | ( | 83 | 53 | 123 | S | 126 | 7E | 176 | ~ | ||
41 | 29 | 051 | ) | 84 | 54 | 124 | T | 127 | 7F | 177 | DEL | ||
42 | 2A | 052 | * | 85 | 55 | 125 | U |
인쇄 불 가능한 제어 문자
33개에 해당하는 인쇄 불가능 아스키 문자는 프린터와 같은 일부 제어 주변장치를 제어하는데 사용되는 제어 문자이다.
10진수 | 문자 | 10진수 | 문자 | |
0 | NUL(null) | 16 | DLE(data link escape) | |
1 | SOH(start of heading) | 17 | DC1(device control 1) | |
2 | SOX(start of text) | 18 | DC2(device control 2) | |
3 | EOX(end of text) | 19 | DC3(device control 3) | |
4 | EOT(end of transmission) | 20 | DC4(device control 4) | |
5 | ENQ(inquiry) | 21 | NAK(negative acknowledge) | |
6 | ACK(acknowledge) | 22 | SYN(synchronous idle) | |
7 | BEL(bell) | 23 | ETB(end of transmission block) | |
8 | BS(backspace) | 24 | CAN(cancel) | |
9 | HT(horizontal tab) | 25 | EM(end of medium) | |
10 | LF(NL line feed/new line) | 26 | SUB(substitute) | |
11 | VT(vertical tab) | 27 | ESC(escape) | |
12 | FF(form feed/new page) | 28 | FS(file separator) | |
13 | CR(carriage return) | 29 | GS(group separator) | |
14 | SO(shift out) | 30 | RS(record separator) | |
10 | SI(shift in) | 31 | US(unit separator) |
확장 ASCII 인쇄 문자
위의 7 Bit 로는 128개의 문자만을 표현할 수 있다.
더 많은 문자의 표현을 위해 확장 ASCII 라는 것이 있는데 이것은 비트(bit) 를 하나 더 늘려 총 8 Bit 로 표현하게 되어 총 259 개를 표현할 수 있다.
즉 128 ~ 255 까지 문자를 추가적으로 표현할 수 있다
(확장 문자 집합은 ASCII 문자 집합과 128개의 그래픽과 선 그리기용 문자를 포함하며 종종 "IBM 문자 집합"이라고도 합니다)