문자 표현
컴퓨터는 영문 대문자 및 소문자, 숫자, 구두점, 특수 문자 등을 사용한다.
이런 문자들은 미리 약속된 코드 체계를 사용한다.
대표적인 코드 체계로 아스키(ASCII) 코드와 유니코드(Unicode)가 있다.
1. ASCII(American Standard Code for Information Interchange)
초창기엔 다양한 방법으로 문자를 표현하였다.
어떠한 방법으로 문자를 표현하든 컴퓨터 단말 내부에서만 사용되면 문제가 없지만, 다른 컴퓨터와의 작업시 호환성 문제가 발생한다.
이러한 호환성 문제를 해결하기 위해 ANSI에서 ASCII 표준 코드 체계를 발표하였다.
참고 ANSI는 American National Standards Institute, 미국 국립 표준 협회를 뜻한다.
ASCII는 각 문자를 7비트로 표현하므로 0000000
부터 1111111
까지 128개 만큼의 문자를 표현할 수 있었다.
아래는 ASCII 코드 테이블이다.
ASCII control characters
DEC | OCT | HEX | BIN | Symbol | Description |
---|---|---|---|---|---|
0 | 000 | 00 | 00000000 | NUL | Null char |
1 | 001 | 01 | 00000001 | SOH | Start of Heading |
2 | 002 | 02 | 00000010 | STX | Start of Text |
3 | 003 | 03 | 00000011 | ETX | End of Text |
4 | 004 | 04 | 00000100 | EOT | End of Transmission |
5 | 005 | 05 | 00000101 | ENQ | Enquiry |
6 | 006 | 06 | 00000110 | ACK | Acknowledgment |
7 | 007 | 07 | 00000111 | BEL | Bell |
8 | 010 | 08 | 00001000 | BS | Back Space |
9 | 011 | 09 | 00001001 | HT | Horizontal Tab |
10 | 012 | 0A | 00001010 | LF | Line Feed |
11 | 013 | 0B | 00001011 | VT | Vertical Tab |
12 | 014 | 0C | 00001100 | FF | Form Feed |
13 | 015 | 0D | 00001101 | CR | Carriage Return |
14 | 016 | 0E | 00001110 | SO | Shift Out / X-On |
15 | 017 | 0F | 00001111 | SI | Shift In / X-Off |
16 | 020 | 10 | 00010000 | DLE | Data Line Escape |
17 | 021 | 11 | 00010001 | DC1 | Device Control 1 (oft. XON) |
18 | 022 | 12 | 00010010 | DC2 | Device Control 2 |
19 | 023 | 13 | 00010011 | DC3 | Device Control 3 (oft. XOFF) |
20 | 024 | 14 | 00010100 | DC4 | Device Control 4 |
21 | 025 | 15 | 00010101 | NAK | Negative Acknowledgement |
22 | 026 | 16 | 00010110 | SYN | Synchronous Idle |
23 | 027 | 17 | 00010111 | ETB | End of Transmit Block |
24 | 030 | 18 | 00011000 | CAN | Cancel |
25 | 031 | 19 | 00011001 | EM | End of Medium |
26 | 032 | 1A | 00011010 | SUB | Substitute |
27 | 033 | 1B | 00011011 | ESC | Escape |
28 | 034 | 1C | 00011100 | FS | File Separator |
29 | 035 | 1D | 00011101 | GS | Group Separator |
30 | 036 | 1E | 00011110 | RS | Record Separator |
31 | 037 | 1F | 00011111 | US | Unit Separator |
32 | 040 | 20 | 00100000 | Space | |
33 | 041 | 21 | 00100001 | ! | Exclamation mark |
34 | 042 | 22 | 00100010 | “ | Double quotes (or speech marks) |
35 | 043 | 23 | 00100011 | # | Number |
36 | 044 | 24 | 00100100 | $ | Dollar |
37 | 045 | 25 | 00100101 | % | Per cent sign |
38 | 046 | 26 | 00100110 | & | Ampersand |
39 | 047 | 27 | 00100111 | ‘ | Single quote |
40 | 050 | 28 | 00101000 | ( | Open parenthesis (or open bracket) |
41 | 051 | 29 | 00101001 | ) | Close parenthesis (or close bracket) |
42 | 052 | 2A | 00101010 | * | Asterisk |
43 | 053 | 2B | 00101011 | + | Plus |
44 | 054 | 2C | 00101100 | , | Comma |
45 | 055 | 2D | 00101101 | - | Hyphen |
46 | 056 | 2E | 00101110 | . | Period, dot or full stop |
47 | 057 | 2F | 00101111 | / | Slash or divide |
48 | 060 | 30 | 00110000 | 0 | Zero |
49 | 061 | 31 | 00110001 | 1 | One |
50 | 062 | 32 | 00110010 | 2 | Two |
51 | 063 | 33 | 00110011 | 3 | Three |
52 | 064 | 34 | 00110100 | 4 | Four |
53 | 065 | 35 | 00110101 | 5 | Five |
54 | 066 | 36 | 00110110 | 6 | Six |
55 | 067 | 37 | 00110111 | 7 | Seven |
56 | 070 | 38 | 00111000 | 8 | Eight |
57 | 071 | 39 | 00111001 | 9 | Nine |
58 | 072 | 3A | 00111010 | : | Colon |
59 | 073 | 3B | 00111011 | ; | Semicolon |
60 | 074 | 3C | 00111100 | < | Less than (or open angled bracket) |
61 | 075 | 3D | 00111101 | = | Equals |
62 | 076 | 3E | 00111110 | > | Greater than (or close angled bracket) |
63 | 077 | 3F | 00111111 | ? | Question mark |
64 | 100 | 40 | 01000000 | @ | At symbol |
65 | 101 | 41 | 01000001 | A | Uppercase A |
66 | 102 | 42 | 01000010 | B | Uppercase B |
67 | 103 | 43 | 01000011 | C | Uppercase C |
68 | 104 | 44 | 01000100 | D | Uppercase D |
69 | 105 | 45 | 01000101 | E | Uppercase E |
70 | 106 | 46 | 01000110 | F | Uppercase F |
71 | 107 | 47 | 01000111 | G | Uppercase G |
72 | 110 | 48 | 01001000 | H | Uppercase H |
73 | 111 | 49 | 01001001 | I | Uppercase I |
74 | 112 | 4A | 01001010 | J | Uppercase J |
75 | 113 | 4B | 01001011 | K | Uppercase K |
76 | 114 | 4C | 01001100 | L | Uppercase L |
77 | 115 | 4D | 01001101 | M | Uppercase M |
78 | 116 | 4E | 01001110 | N | Uppercase N |
79 | 117 | 4F | 01001111 | O | Uppercase O |
80 | 120 | 50 | 01010000 | P | Uppercase P |
81 | 121 | 51 | 01010001 | Q | Uppercase Q |
82 | 122 | 52 | 01010010 | R | Uppercase R |
83 | 123 | 53 | 01010011 | S | Uppercase S |
84 | 124 | 54 | 01010100 | T | Uppercase T |
85 | 125 | 55 | 01010101 | U | Uppercase U |
86 | 126 | 56 | 01010110 | V | Uppercase V |
87 | 127 | 57 | 01010111 | W | Uppercase W |
88 | 130 | 58 | 01011000 | X | Uppercase X |
89 | 131 | 59 | 01011001 | Y | Uppercase Y |
90 | 132 | 5A | 01011010 | Z | Uppercase Z |
91 | 133 | 5B | 01011011 | [ | Opening bracket |
92 | 134 | 5C | 01011100 | \ | Backslash |
93 | 135 | 5D | 01011101 | ] | Closing bracket |
94 | 136 | 5E | 01011110 | ^ | Caret - circumflex |
95 | 137 | 5F | 01011111 | _ | Underscore |
96 | 140 | 60 | 01100000 | ` | Grave accent |
97 | 141 | 61 | 01100001 | a | Lowercase a |
98 | 142 | 62 | 01100010 | b | Lowercase b |
99 | 143 | 63 | 01100011 | c | Lowercase c |
100 | 144 | 64 | 01100100 | d | Lowercase d |
101 | 145 | 65 | 01100101 | e | Lowercase e |
102 | 146 | 66 | 01100110 | f | Lowercase f |
103 | 147 | 67 | 01100111 | g | Lowercase g |
104 | 150 | 68 | 01101000 | h | Lowercase h |
105 | 151 | 69 | 01101001 | i | Lowercase i |
106 | 152 | 6A | 01101010 | j | Lowercase j |
107 | 153 | 6B | 01101011 | k | Lowercase k |
108 | 154 | 6C | 01101100 | l | Lowercase l |
109 | 155 | 6D | 01101101 | m | Lowercase m |
110 | 156 | 6E | 01101110 | n | Lowercase n |
111 | 157 | 6F | 01101111 | o | Lowercase o |
112 | 160 | 70 | 01110000 | p | Lowercase p |
113 | 161 | 71 | 01110001 | q | Lowercase q |
114 | 162 | 72 | 01110010 | r | Lowercase r |
115 | 163 | 73 | 01110011 | s | Lowercase s |
116 | 164 | 74 | 01110100 | t | Lowercase t |
117 | 165 | 75 | 01110101 | u | Lowercase u |
118 | 166 | 76 | 01110110 | v | Lowercase v |
119 | 167 | 77 | 01110111 | w | Lowercase w |
120 | 170 | 78 | 01111000 | x | Lowercase x |
121 | 171 | 79 | 01111001 | y | Lowercase y |
122 | 172 | 7A | 01111010 | z | Lowercase z |
123 | 173 | 7B | 01111011 | { | Opening brace |
124 | 174 | 7C | 01111100 | ||
125 | 175 | 7D | 01111101 | } | Closing brace |
126 | 176 | 7E | 01111110 | ~ | Equivalency sign - tilde |
127 | 177 | 7F | 01111111 | DEL | Delete |
그런데 이상한점이 있다.
ASCII는 0000000
부터 1111111
까지의 범위를 가진 7비트인데 위의 테이블은 8비트로 표현되어 있다.
이는 ASCII로 표현할 수 없는 추가적인 문자를 지원하기 위해 기존 7비트에 1을 추가하여 8비트로 확장하였기 때문이다.
기존 128개의 문자는 앞에 0이 붙어있다.
2. Unicode
ASCII를 확장한 8비트로 표현할 수 있는 문자는 총 256개이다.
당연히 모든 문자를 표현할 수 없기에 다른 표현 체계가 필요해지게 되었다.
이때 각 나라의 언어를 모두 표현하기 위해 유니코드 체계가 발표되었다.
유니코드는 사용중인 운영체제, 프로그램, 언어에 상관없이 모든 문자마다 고유한 코드값을 부여한다.
언어와 상관없이 모든 문자를 16비트로 표현하기에 최대 65,536개의 문자를 표현할 수 있다.
이 유니코드 표준은 애플, 마이크로소프트, HP, IBM 등의 업계에서 채택되었다.
한글의 경우
AC00
의 ‘가’부터 D7A3
희 힣
까지 총 11,172자를 표현하고 있다.
참고 초성 19개 * 중성 21개 * 종성 28개를 곱한 값이다.
유니코드에 정의된 한글 리스트는 아래 출처에서 확인할 수 있다.