Ký tự là một hình vẽ, một biểu tượng, và nó dường như không hề có một quy luật cụ thể nào cả. Do đó, để giúp cho máy tính có thể hiểu và hiển thị được ký tự, con người đã nghĩ ra một công cụ. Đó chính là bảng mã ASCII.
ASCII là gì?
ASCII là viết tắt của cụm từ "American Standard Code for Information Interchange". Như các bạn đã biết, máy tính chỉ có thể hiểu được các con số, do đó, một mã ASCII là đại diện của một ký tự chẳng hạn như là ‘A’ hay là ‘@’ hoặc một số tín hiệu khác. Tuy nhiên, giờ đây các tín hiệu điều khiển đó đã ít được sử dụng so với thời điểm mới ra đời của ASCII. Ngoài ra, còn rất nhiều ký tự đặc biệt khác để hỗ trợ nhiều loại ngôn ngữ khác nhau, và đó chính là lý do ra đời của bảng mã ASCII mở rộng.
Các ký tự bảng mã ASCII hỗ trợ
DEC | BIN | HEX | OCT | HTML | SYM | DEC | BIN | HEX | OCT | HTML | SYM |
0 | 00000000 | 0x00 | 000 | � | NUL | 64 | 01000000 | 0x40 | 100 | @ | @ |
1 | 00000001 | 0x01 | 001 |  | SOH | 65 | 01000001 | 0x41 | 101 | A | A |
2 | 00000010 | 0x02 | 002 |  | STX | 66 | 01000010 | 0x42 | 102 | B | B |
3 | 00000011 | 0x03 | 003 |  | ETX | 67 | 01000011 | 0x43 | 103 | C | C |
4 | 00000100 | 0x04 | 004 |  | EOT | 68 | 01000100 | 0x44 | 104 | D | D |
5 | 00000101 | 0x05 | 005 |  | ENQ | 69 | 01000101 | 0x45 | 105 | E | E |
6 | 00000110 | 0x06 | 006 |  | ACK | 70 | 01000110 | 0x46 | 106 | F | F |
7 | 00000111 | 0x07 | 007 |  | BEL | 71 | 01000111 | 0x47 | 107 | G | G |
8 | 00001000 | 0x08 | 010 |  | BS | 72 | 01001000 | 0x48 | 110 | H | H |
9 | 00001001 | 0x09 | 011 | 	 | TAB | 73 | 01001001 | 0x49 | 111 | I | I |
10 | 00001010 | 0x0A | 012 | | LF | 74 | 01001010 | 0x4A | 112 | J | J |
11 | 00001011 | 0x0B | 013 |  | VT | 75 | 01001011 | 0x4B | 113 | K | K |
12 | 00001100 | 0x0C | 014 |  | FF | 76 | 01001100 | 0x4C | 114 | L | L |
13 | 00001101 | 0x0D | 015 | | CR | 77 | 01001101 | 0x4D | 115 | M | M |
14 | 00001110 | 0x0E | 016 |  | SO | 78 | 01001110 | 0x4E | 116 | N | N |
15 | 00001111 | 0x0F | 017 |  | SI | 79 | 01001111 | 0x4F | 117 | O | O |
16 | 00010000 | 0x10 | 020 |  | DLE | 80 | 01010000 | 0x50 | 120 | P | P |
17 | 00010001 | 0x11 | 021 |  | DC1 | 81 | 01010001 | 0x51 | 121 | Q | Q |
18 | 00010010 | 0x12 | 022 |  | DC2 | 82 | 01010010 | 0x52 | 122 | R | R |
19 | 00010011 | 0x13 | 023 |  | DC3 | 83 | 01010011 | 0x53 | 123 | S | S |
20 | 00010100 | 0x14 | 024 |  | DC4 | 84 | 01010100 | 0x54 | 124 | T | T |
21 | 00010101 | 0x15 | 025 |  | NAK | 85 | 01010101 | 0x55 | 125 | U | U |
22 | 00010110 | 0x16 | 026 |  | SYN | 86 | 01010110 | 0x56 | 126 | V | V |
23 | 00010111 | 0x17 | 027 |  | ETB | 87 | 01010111 | 0x57 | 127 | W | W |
24 | 00011000 | 0x18 | 030 |  | CAN | 88 | 01011000 | 0x58 | 130 | X | X |
25 | 00011001 | 0x19 | 031 |  | EM | 89 | 01011001 | 0x59 | 131 | Y | Y |
26 | 00011010 | 0x1A | 032 |  | SUB | 90 | 01011010 | 0x5A | 132 | Z | Z |
27 | 00011011 | 0x1B | 033 |  | ESC | 91 | 01011011 | 0x5B | 133 | [ | [ |
28 | 00011100 | 0x1C | 034 |  | FS | 92 | 01011100 | 0x5C | 134 | \ | \ |
29 | 00011101 | 0x1D | 035 |  | GS | 93 | 01011101 | 0x5D | 135 | ] | ] |
30 | 00011110 | 0x1E | 036 |  | RS | 94 | 01011110 | 0x5E | 136 | ^ | ^ |
31 | 00011111 | 0x1F | 037 |  | US | 95 | 01011111 | 0x5F | 137 | _ | _ |
32 | 00100000 | 0x20 | 040 |   | SPACE | 96 | 01100000 | 0x60 | 140 | ` | ` |
33 | 00100001 | 0x21 | 041 | ! | ! | 97 | 01100001 | 0x61 | 141 | a | a |
34 | 00100010 | 0x22 | 042 | " | " | 98 | 01100010 | 0x62 | 142 | b | b |
35 | 00100011 | 0x23 | 043 | # | # | 99 | 01100011 | 0x63 | 143 | c | c |
36 | 00100100 | 0x24 | 044 | $ | $ | 100 | 01100100 | 0x64 | 144 | d | d |
37 | 00100101 | 0x25 | 045 | % | % | 101 | 01100101 | 0x65 | 145 | e | e |
38 | 00100110 | 0x26 | 046 | & | & | 102 | 01100110 | 0x66 | 146 | f | f |
39 | 00100111 | 0x27 | 047 | ' | ' | 103 | 01100111 | 0x67 | 147 | g | g |
40 | 00101000 | 0x28 | 050 | ( | ( | 104 | 01101000 | 0x68 | 150 | h | h |
41 | 00101001 | 0x29 | 051 | ) | ) | 105 | 01101001 | 0x69 | 151 | i | i |
42 | 00101010 | 0x2A | 052 | * | * | 106 | 01101010 | 0x6A | 152 | j | j |
43 | 00101011 | 0x2B | 053 | + | + | 107 | 01101011 | 0x6B | 153 | k | k |
44 | 00101100 | 0x2C | 054 | , | , | 108 | 01101100 | 0x6C | 154 | l | l |
45 | 00101101 | 0x2D | 055 | - | - | 109 | 01101101 | 0x6D | 155 | m | m |
46 | 00101110 | 0x2E | 056 | . | . | 110 | 01101110 | 0x6E | 156 | n | n |
47 | 00101111 | 0x2F | 057 | / | / | 111 | 01101111 | 0x6F | 157 | o | o |
48 | 00110000 | 0x30 | 060 | 0 | 0 | 112 | 01110000 | 0x70 | 160 | p | p |
49 | 00110001 | 0x31 | 061 | 1 | 1 | 113 | 01110001 | 0x71 | 161 | q | q |
50 | 00110010 | 0x32 | 062 | 2 | 2 | 114 | 01110010 | 0x72 | 162 | r | r |
51 | 00110011 | 0x33 | 063 | 3 | 3 | 115 | 01110011 | 0x73 | 163 | s | s |
52 | 00110100 | 0x34 | 064 | 4 | 4 | 116 | 01110100 | 0x74 | 164 | t | t |
53 | 00110101 | 0x35 | 065 | 5 | 5 | 117 | 01110101 | 0x75 | 165 | u | u |
54 | 00110110 | 0x36 | 066 | 6 | 6 | 118 | 01110110 | 0x76 | 166 | v | v |
55 | 00110111 | 0x37 | 067 | 7 | 7 | 119 | 01110111 | 0x77 | 167 | w | w |
56 | 00111000 | 0x38 | 070 | 8 | 8 | 120 | 01111000 | 0x78 | 170 | x | x |
57 | 00111001 | 0x39 | 071 | 9 | 9 | 121 | 01111001 | 0x79 | 171 | y | y |
58 | 00111010 | 0x3A | 072 | : | : | 122 | 01111010 | 0x7A | 172 | z | z |
59 | 00111011 | 0x3B | 073 | ; | ; | 123 | 01111011 | 0x7B | 173 | { | { |
60 | 00111100 | 0x3C | 074 | < | < | 124 | 01111100 | 0x7C | 174 | | | | |
61 | 00111101 | 0x3D | 075 | = | = | 125 | 01111101 | 0x7D | 175 | } | } |
62 | 00111110 | 0x3E | 076 | > | > | 126 | 01111110 | 0x7E | 176 | ~ | ~ |
63 | 00111111 | 0x3F | 077 | ? | ? | 127 | 01111111 | 0x7F | 177 |  | DEL |
Bảng mã ASCII mở rộng
Trải qua thời gian kỹ thuật và công nghệ thông tin phát triển, chiếc máy tính đến tay nhiều quốc gia trên thế giới, và do các ngôn ngữ có khá nhiều ký tự lạ nên đã ra đời Bảng mã ASCII mở rộng. Không như bảng mã ASCII truyền thống dùng 7 bit để biểu thị ký tự, bảng mã ASCII mở rộng sử dụng cả 8 bit. Điều này giúp cho nhiều ngôn ngữ có thể xuất hiện trên chiếc máy tính và giúp cho thị trường máy tính được mở rộng hơn. Bảng mã ASCII mở rộng lúc mới được công bố đã sinh ra thêm khá nhiều biến thể. Tuy nhiên, bởi vì Internet sử dụng chuẩn ký tự là ISO 8859-1 và hệ điều hành phổ biến là Microsoft Windows cũng sử dụng chuẩn tương tự nên bảng mã ASCII mở rộng theo chuẩn này được ngầm định là chuẩn.
Các ký tự bảng mã ASCII mở rộng hỗ trợ
DEC | BIN | HEX | OCT | HTML | SYM | DEC | BIN | HEX | OCT | HTML | SYM |
128 | 10000000 | 0x80 | 200 | € | € | 192 | 11000000 | 0xC0 | 300 | À | À |
129 | 10000001 | 0x81 | 201 |  | 193 | 11000001 | 0xC1 | 301 | Á | Á | |
130 | 10000010 | 0x82 | 202 | ‚ | ‚ | 194 | 11000010 | 0xC2 | 302 | Â | Â |
131 | 10000011 | 0x83 | 203 | ƒ | ƒ | 195 | 11000011 | 0xC3 | 303 | Ã | Ã |
132 | 10000100 | 0x84 | 204 | „ | „ | 196 | 11000100 | 0xC4 | 304 | Ä | Ä |
133 | 10000101 | 0x85 | 205 | … | … | 197 | 11000101 | 0xC5 | 305 | Å | Å |
134 | 10000110 | 0x86 | 206 | † | † | 198 | 11000110 | 0xC6 | 306 | Æ | Æ |
135 | 10000111 | 0x87 | 207 | ‡ | ‡ | 199 | 11000111 | 0xC7 | 307 | Ç | Ç |
136 | 10001000 | 0x88 | 210 | ˆ | ˆ | 200 | 11001000 | 0xC8 | 310 | È | È |
137 | 10001001 | 0x89 | 211 | ‰ | ‰ | 201 | 11001001 | 0xC9 | 311 | É | É |
138 | 10001010 | 0x8A | 212 | Š | Š | 202 | 11001010 | 0xCA | 312 | Ê | Ê |
139 | 10001011 | 0x8B | 213 | ‹ | ‹ | 203 | 11001011 | 0xCB | 313 | Ë | Ë |
140 | 10001100 | 0x8C | 214 | Œ | Œ | 204 | 11001100 | 0xCC | 314 | Ì | Ì |
141 | 10001101 | 0x8D | 215 |  | 205 | 11001101 | 0xCD | 315 | Í | Í | |
142 | 10001110 | 0x8E | 216 | Ž | Ž | 206 | 11001110 | 0xCE | 316 | Î | Î |
143 | 10001111 | 0x8F | 217 |  | 207 | 11001111 | 0xCF | 317 | Ï | Ï | |
144 | 10010000 | 0x90 | 220 |  | 208 | 11010000 | 0xD0 | 320 | Ð | Ð | |
145 | 10010001 | 0x91 | 221 | ‘ | ‘ | 209 | 11010001 | 0xD1 | 321 | Ñ | Ñ |
146 | 10010010 | 0x92 | 222 | ’ | ’ | 210 | 11010010 | 0xD2 | 322 | Ò | Ò |
147 | 10010011 | 0x93 | 223 | “ | “ | 211 | 11010011 | 0xD3 | 323 | Ó | Ó |
148 | 10010100 | 0x94 | 224 | ” | ” | 212 | 11010100 | 0xD4 | 324 | Ô | Ô |
149 | 10010101 | 0x95 | 225 | • | • | 213 | 11010101 | 0xD5 | 325 | Õ | Õ |
150 | 10010110 | 0x96 | 226 | – | – | 214 | 11010110 | 0xD6 | 326 | Ö | Ö |
151 | 10010111 | 0x97 | 227 | — | — | 215 | 11010111 | 0xD7 | 327 | × | × |
152 | 10011000 | 0x98 | 230 | ˜ | ˜ | 216 | 11011000 | 0xD8 | 330 | Ø | Ø |
153 | 10011001 | 0x99 | 231 | ™ | ™ | 217 | 11011001 | 0xD9 | 331 | Ù | Ù |
154 | 10011010 | 0x9A | 232 | š | š | 218 | 11011010 | 0xDA | 332 | Ú | Ú |
155 | 10011011 | 0x9B | 233 | › | › | 219 | 11011011 | 0xDB | 333 | Û | Û |
156 | 10011100 | 0x9C | 234 | œ | œ | 220 | 11011100 | 0xDC | 334 | Ü | Ü |
157 | 10011101 | 0x9D | 235 |  | 221 | 11011101 | 0xDD | 335 | Ý | Ý | |
158 | 10011110 | 0x9E | 236 | ž | ž | 222 | 11011110 | 0xDE | 336 | Þ | Þ |
159 | 10011111 | 0x9F | 237 | Ÿ | Ÿ | 223 | 11011111 | 0xDF | 337 | ß | ß |
160 | 10100000 | 0xA0 | 240 |   | 224 | 11100000 | 0xE0 | 340 | à | à | |
161 | 10100001 | 0xA1 | 241 | ¡ | ¡ | 225 | 11100001 | 0xE1 | 341 | á | á |
162 | 10100010 | 0xA2 | 242 | ¢ | ¢ | 226 | 11100010 | 0xE2 | 342 | â | â |
163 | 10100011 | 0xA3 | 243 | £ | £ | 227 | 11100011 | 0xE3 | 343 | ã | ã |
164 | 10100100 | 0xA4 | 244 | ¤ | ¤ | 228 | 11100100 | 0xE4 | 344 | ä | ä |
165 | 10100101 | 0xA5 | 245 | ¥ | ¥ | 229 | 11100101 | 0xE5 | 345 | å | å |
166 | 10100110 | 0xA6 | 246 | ¦ | ¦ | 230 | 11100110 | 0xE6 | 346 | æ | æ |
167 | 10100111 | 0xA7 | 247 | § | § | 231 | 11100111 | 0xE7 | 347 | ç | ç |
168 | 10101000 | 0xA8 | 250 | ¨ | ¨ | 232 | 11101000 | 0xE8 | 350 | è | è |
169 | 10101001 | 0xA9 | 251 | © | © | 233 | 11101001 | 0xE9 | 351 | é | é |
170 | 10101010 | 0xAA | 252 | ª | ª | 234 | 11101010 | 0xEA | 352 | ê | ê |
171 | 10101011 | 0xAB | 253 | « | « | 235 | 11101011 | 0xEB | 353 | ë | ë |
172 | 10101100 | 0xAC | 254 | ¬ | ¬ | 236 | 11101100 | 0xEC | 354 | ì | ì |
173 | 10101101 | 0xAD | 255 | ­ | | 237 | 11101101 | 0xED | 355 | í | í |
174 | 10101110 | 0xAE | 256 | ® | ® | 238 | 11101110 | 0xEE | 356 | î | î |
175 | 10101111 | 0xAF | 257 | ¯ | ¯ | 239 | 11101111 | 0xEF | 357 | ï | ï |
176 | 10110000 | 0xB0 | 260 | ° | ° | 240 | 11110000 | 0xF0 | 360 | ð | ð |
177 | 10110001 | 0xB1 | 261 | ± | ± | 241 | 11110001 | 0xF1 | 361 | ñ | ñ |
178 | 10110010 | 0xB2 | 262 | ² | ² | 242 | 11110010 | 0xF2 | 362 | ò | ò |
179 | 10110011 | 0xB3 | 263 | ³ | ³ | 243 | 11110011 | 0xF3 | 363 | ó | ó |
180 | 10110100 | 0xB4 | 264 | ´ | ´ | 244 | 11110100 | 0xF4 | 364 | ô | ô |
181 | 10110101 | 0xB5 | 265 | µ | µ | 245 | 11110101 | 0xF5 | 365 | õ | õ |
182 | 10110110 | 0xB6 | 266 | ¶ | ¶ | 246 | 11110110 | 0xF6 | 366 | ö | ö |
183 | 10110111 | 0xB7 | 267 | · | · | 247 | 11110111 | 0xF7 | 367 | ÷ | ÷ |
184 | 10111000 | 0xB8 | 270 | ¸ | ¸ | 248 | 11111000 | 0xF8 | 370 | ø | ø |
185 | 10111001 | 0xB9 | 271 | ¹ | ¹ | 249 | 11111001 | 0xF9 | 371 | ù | ù |
186 | 10111010 | 0xBA | 272 | º | º | 250 | 11111010 | 0xFA | 372 | ú | ú |
187 | 10111011 | 0xBB | 273 | » | » | 251 | 11111011 | 0xFB | 373 | û | û |
188 | 10111100 | 0xBC | 274 | ¼ | ¼ | 252 | 11111100 | 0xFC | 374 | ü | ü |
189 | 10111101 | 0xBD | 275 | ½ | ½ | 253 | 11111101 | 0xFD | 375 | ý | ý |
190 | 10111110 | 0xBE | 276 | ¾ | ¾ | 254 | 11111110 | 0xFE | 376 | þ | þ |
191 | 10111111 | 0xBF | 277 | ¿ | ¿ | 255 | 11111111 | 0xFF | 377 | ÿ | ÿ |
Bảng mã ASCII và C++
Như các bạn đã biết, bảng mã ASCII thể hiện ký tự dưới dạng số, vậy chuyện gì xảy ra nếu như tôi chạy dòng lệnh sau?
#include <stdio.h> int main() { printf("%c\n", -2); return 0; }
-2 trong dạng nhị phân sẽ được biểu hiện bằng 8 bit ở dạng bù 2 như sau: 1 1 1 1 1 1 1 0 . Khi tôi cho in giá trị -2 ra màn hình dưới dạng kiểu char, máy tính sẽ chuyển 1 1 1 1 1 1 1 0 sang số nguyên không âm (thành 254) và in ký tự mà giá trị 254 biểu thị ra màn hình.