ASCII

ASCII (англ. American Standard Code for Information Interchangeамериканский стандартный код для обмена информацией; по-английски произносится [э́ски], по-русски произносится [а́ски], и слово ASCII чаще употребляется в женском роде) — 7-битная компьютерная кодировка для представления латинского алфавита, десятичных цифр, некоторых знаков препинания, арифметических операций и управляющих символов. В честь кода ASCII даже был назван небольшой астероид — «3568 ASCII» (открыт в 1936 году, название получил позже).

Содержание

История ASCII

Первый вариант ASCII предназначался в основном для передачи сообщений по телетайпу. Он был разработан 1963 году в фирме Bell Laboratories на смену созданной в 1874 году 5-битному коду Бодо. (Предшественницей кода Бодо была азбука Морзе.) В этом варианте ещё не было строчных букв. Они были добавлены в 1967 году, наряду с заменой стрелочки влево на подчерк (_), а стрелочки вверх — на символ ^. Так возник вариант ASCII, используемый и поныне.

По сравнению с кодом Бодо, кодировка ASCII представляла широкий набор обычных и управляющих символов, кроме того, буквы шли подряд и по алфавиту, что позволяло легко сортировать тексты.

7-битный код оказался удобным для использования и в компьютерах, поскольку компьютеры оперировали 8-битными байтами, а 8-й бит можно было использовать для контроля чётности. (Системы, не использовавшие контроль чётности, обычно делали старший бит нулевым.) Семибитность позволяла также добавить лишние 128 символов (например, для поддержки национальных алфавитов).

Конкурентом ASCII была кодировка EBCDIC, разработанная в 1964 году фирмой IBM для своей операционной системы System/360. Кодировка EBCDIC, однако, была сделана под тогдашние перфораторы и обладала рядом недостатков: была 8-битной (следовательно, не позволяла ни осуществлять контроль чётности, ни добавлять новые символы); буквы шли хотя и по алфавиту, но не подряд (например, после I следует не J, а символ переноса (soft hyphen)). В результате почти везде использовалась ASCII, а EBCDIC — только в системе System/360 и совместимых с ней (например, ОС ЕС). Сейчас даже компьютеры IBM Mainframe используют EBCDIC только для обратной совместимости.

Национальные варианты 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. В настоящее время национальные 7-битные кодировки уже прочно забыты, и «ASCII» практически всегда означает «US-ASCII».

Кодировка

  .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. 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
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

Управляющие символы

После названия каждого символа указан его шестнадцатеричный код.

  • 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, звонок. Сейчас тоже используется.
  • BS, 08 — Backspace, возврат на один символ. Сейчас стирает предыдущий символ.
  • TAB, 09 — Tabulation. Обозначался также HT — Horizontal Tabulation, горизонтальная табуляция. Во многих языках программирования обозначается \t .
  • LF, 0A — Line Feed, перевод строки. Сейчас в конце каждой строчки текстового файла ставится или этот символ, или символы 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, стереть (последний символ). На перфолентах 1 представлялась дырочкой, 0 — отсутствием дырочки. Поэтому символом DEL, состоящим в двоичном коде из всех единиц, можно было забить любой символ. Устройства и программы игнорировали DEL так же, как NUL

Структурные свойства таблицы

  • Цифры 0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту.
  • Буквы верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон.

Представление ASCII в компьютерах

На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя 1 нулевой бит в качестве старшего.

На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица:

  .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
0. NUL SOM EOA EOM EQT WRU RU BELL BKSP HT LF VT FF CR SO SI
1. DC0 DC1 DC2 DC3 DC4 ERR SYNC LEM S0 S1 S2 S3 S4 S5 S6 S7
2.                                
3.                                
4. BLANK  ! " # $ % & ' ( ) * + , . /
5. 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
6.                                
7.                                
8.                                
9.                                
A. @ A B C D E F G H I J K L M N O
B. P Q R S T U V W X Y Z [ \ ]
C.                                
D.                                
E.   a b c d e f g h i j k l m n o
F. p q r s t u v w x y z       ESC DEL

(таблица символов приведена по книге G. M. Amdahl, G. A. Blaauw, F. P. Brooks, Jr. "Architecture of the IBM System/360", 1964)

На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.

См. также

Ссылки

 

Видео:

Characters in a computer - ASCII Tutorial (1/3)
Video series about how characters are represented in a computer. This first part talks about the ASCII character set and the problems associated with it.
Converting Numbers into Binary for Beginners & Some fun with ASCII
In this Video I talk about how to convert numbers from our number system (Base-10) into the binary number system (Base-2). I covered all of the basics of our...
Lesson 6.6 : How numbers are encoded as characters in ASCII
See more at http://www.highercomputingforeveryone.com -- In this lesson I explain how numbers are encoded as text, using ASCII.
ASCII
¿Qué es el código ASCII ?
hola amigos youtuberos, ya saben comenten, y suscribanse, les traigo un video tutorial sobre. El código ASCII Aqui les dejo un Link: http://www.elcodigoascii...
ASCII fluid dynamics -- IOCCC2012 endoh1.c
A tiny fluid simulator that fits in 80x25 terminal. http://www.ioccc.org/2012/endoh1/hint.html BGM: Water Music (Handel)
Eletronica Digital - Aula 21 - (Código ASCII)
Video Aula por Gabriel Acessem: http://eletronicabasica.wordpress.com/category/video-aulas/eletronica-digital/
Percussions (Four Tet) - Ascii Bot
https://www.facebook.com/DanceSafeToday http://www.fourtet.net/ https://soundcloud.com/four-tet Percussions (Four Tet) EP TEXT029 : A1. KHLHI B1. Sext TEXT03...
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home