ASCII
Материал из Википедии — свободной энциклопедии
https://ru.wikipedia.org/wiki/ASCII
ASCII (англ. American Standard Code for Information Interchange — американский стандартный код для обмена информацией; по-американски произносится [ э́ски ], тогда как в Великобритании чаще произносится [ а́ски ]; по-русски также произносится [ а́ски ]) — 7‑битная компьютерная кодировка для представления латинского алфавита, десятичных цифр, некоторых знаков препинания, арифметических операций и управляющих символов. [1]
Содержание
|
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
- a BS ' → á
- a BS ` → à
- a BS ^ → â
- o BS / → ø
- c BS, → ç
- n BS ~ → ñ
(в старых шрифтах апостроф ' рисовался с наклоном вправо, а тильда ~ была сдвинута вверх, так что они как раз подходили на роль акута и тильды сверху).
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на символ накладывается подчёркивание, то получается подчёркнутый текст.
- a BS a → a
- a BS _ → a
(это используется, например, в справочной системе man).
Национальные варианты ASCII
Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов на месте @ [ \ ] ^ ` { | } ~. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».
Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.
Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — разные другие нужные символы. В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.
Верхняя половина таблицы в настоящее время активно используется для представления кириллических символов и её вариации (КОИ-8, Windows-1251 и другие) доставляют основные проблемы с кодировками.
Кодировка
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
0. | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | TAB | LF | VT | FF | CR | SO | SI |
1. | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
2. | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | — | . | / | |
3. | : | ; | < | = | > | ? | ||||||||||
4. | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5. | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6. | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7. | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.
Управляющие символы
Основная статья: Управляющие символы
Поскольку ASCII изначально предназначался для обмена информацией (по телетайпу), в нем, кроме информационных символов, используются символы-команды для управления связью. Это обычный набор спецсигналов, применявшийся и в других докомпьютерных средствах обмена сообщениями (азбука Морзе, семафорная азбука), дополненный с учетом специфики устройства.
(После названия каждого символа указан его 16-ричный код)
- NUL, 00 — Null, пустой. Всегда игнорировался. На перфолентах 1 представлялась дырочкой, 0 — отсутствием дырочки. Поэтому пустые части перфоленты до начала и после конца сообщения состояли из таких символов. Сейчас используется во многих языках программирования как конец строки. (Строка понимается как последовательность символов.) В некоторых операционных системах NUL — последний символ любого текстового файла.
- SOH, 01 — Start Of Heading, начало заголовка.
- STX, 02 — Start of Text, начало текста. Текстом называлась часть сообщения, предназначенная для печати. Адрес, контрольная сумма и т. д. входили или в заголовок, или в часть сообщения после текста.
- ETX, 03 — End of Text, конец текста. Здесь телетайп прекращал печатать. Использование символа Ctrl-C, имеющего код 03, для прекращения работы чего-то (обычно программы), восходит ещё к тем временам.
- EOT, 04 — End of Transmission, конец передачи. В системе UNIX Ctrl-D, имеющий тот же код, означает конец файла при вводе с клавиатуры.
- ENQ, 05 — Enquire. Прошу подтверждения.
- ACK, 06 — Acknowledgement. Подтверждаю.
- BEL, 07 — Bell, звонок, звуковой сигнал. Сейчас тоже используется. В языках программирования C и C++ обозначается \a.
- BS, 08 — Backspace, возврат на один символ. Сейчас стирает предыдущий символ.
- TAB, 09 — Tabulation. Обозначался также HT — Horizontal Tabulation, горизонтальная табуляция. Во многих языках программирования обозначается \t.
- LF, 0A — Line Feed, перевод строки. Сейчас в конце каждой строчки текстового файла ставится либо этот символ, либо CR, либо и тот и другой (CR, затем LF), в зависимости от операционной системы. Во многих языках программирования обозначается \n и при выводе текста приводит к переводу строки.
- VT, 0B — Vertical Tab, вертикальная табуляция.
- FF, 0C — Form Feed, новая страница.
- CR, 0D — Carriage Return, возврат каретки. Во многих языках программирования этот символ, обозначаемый \r, можно использовать для возврата в начало строчки без перевода строки. В некоторых операционных системах этот же символ, обозначаемый Ctrl-M, ставится в конце каждой строчки текстового файла перед LF.
- SO, 0E — Shift Out, измени цвет ленты (использовался для двуцветных лент; цвет менялся обычно на красный). В дальнейшем обозначал начало использования национальной кодировки.
- SI, 0F — Shift In, обратно к Shift Out.
- DLE, 10 — Data Link Escape, следующие символы имеют специальный смысл.
- DC1, 11 — Device Control 1, 1-й символ управления устройством — включить устройство чтения перфоленты.
- DC2, 12 — Device Control 2, 2-й символ управления устройством — включить перфоратор.
- DC3, 13 — Device Control 3, 3-й символ управления устройством — выключить устройство чтения перфоленты.
- DC4, 14 — Device Control 4, 4-й символ управления устройством — выключить перфоратор.
- NAK, 15 — Negative Acknowledgment, не подтверждаю. Обратно к Acknowledgment.
- SYN, 16 — Synchronization. Этот символ передавался, когда для синхронизации было необходимо что-нибудь передать.
- ETB, 17 — End of Text Block, конец текстового блока. Иногда текст по техническим причинам разбивался на блоки.
- CAN, 18 — Cancel, отмена (того, что было передано ранее).
- EM, 19 — End of Medium, кончилась перфолента и т. д.
- SUB, 1A — Substitute, подставить. Следующий символ — другого цвета или из дополнительного набора символов. Сейчас Ctrl-Z используется как конец файла при вводе с клавиатуры в системах DOS и Windows. У этой функции нет никакой очевидной связи с символом SUB.
- ESC, 1B — Escape. Следующие символы — что-то специальное.
- FS, 1C — File Separator, разделитель файлов.
- GS, 1D — Group Separator, разделитель групп.
- RS, 1E — Record Separator, разделитель записей.
- US, 1F — Unit Separator, разделитель юнитов. То есть поддерживалось 4 уровня структуризации данных: сообщение могло состоять из файлов, файлы из групп, группы из записей, записи из юнитов.
- DEL, 7F — Delete, стереть последний символ. Символом DEL, состоящим в двоичном коде из всех единиц, можно было забить любой символ. Устройства и программы игнорировали DEL так же, как NUL. Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило забиванием его кода дырочками (обозначавшими логические единицы).
Структурные свойства таблицы
- Цифры 0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту.
- Буквы верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон.