link700 link701 link702 link703 link704 link705 link706 link707 link708 link709 link710 link711 link712 link713 link714 link715 link716 link717 link718 link719 link720 link721 link722 link723 link724 link725 link726 link727 link728 link729 link730 link731 link732 link733 link734 link735 link736 link737 link738 link739 link740 link741 link742 link743 link744 link745 link746 link747 link748 link749 link750 link751 link752 link753 link754 link755 link756 link757 link758 link759 link760 link761 link762 link763 link764 link765 link766 link767 link768 link769 link770 link771 link772 link773 link774 link775 link776 link777 link778 link779 link780 link781 link782 link783 link784 link785 link786 link787 link788 link789 link790 link791 link792 link793 link794 link795 link796 link797 link798 link799 link800 link801 link802 link803 link804 link805 link806 link807 link808 link809 link810 link811 link812 link813 link814 link815 link816 link817 link818 link819 link820 link821 link822 link823 link824 link825 link826 link827 link828 link829 link830 link831 link832 link833 link834 link835 link836 link837 link838 link839

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Кодирование символов

ASCII-код. Структура кодовой таблицы


American Standard Code for Information Interchange (см. таблицу ниже) использовал 7 битов. Всего можно было изобразить до 128 символов, но из них печатных было 96. 8-й бит использовали по-разному: 

  • для контроля четности;
  • как признак "нет/есть данные";
  • для расширения набора изображаемых символов;
  • никак не использовали.

ASCII-код

Примечание: В дальнейшем изложении все приводимые коды даны в десятичном виде, если система счисления не обозначена явно.

Алфавитно-цифровые символы и символ пробела

Они занимают часть кодов, начиная с 48, и упорядочены, что позволяет легко:

  •  производить преобразование из числового представления в символьное:

код_цифры = число + 30h

  •  переходить от порядкового номера в алфавите к коду буквы — для латинского алфавита:

код_прописной_буквы = порядковый_номер + 40h
код_строчной_буквы = порядковый_номер + 60h

Кроме того, упорядочение позволяет легко программировать сортировку записей, включая и левые пробелы, по алфавиту или по возрастанию чисел.
 

Арифметические знаки и знаки препинания расположены с алфавитно-цифровыми “вперемешку”.

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

В технике передачи символьной информации (телеграфии) надо было передавать не только печатные символы, но и дополнительную управляющую информацию, такую, как:

  • переход к следующей строке;
  • переход к началу строки;
  • отмена последнего переданного символа, ....;
  • и еще многие другие.

Для этого в таблице ASCII была выделена часть кодов с 0 по 31. Некоторые наиболее употребительные управляющие коды с их обозначениями, пришедшими из техники телеграфной связи, даны в таблице (см. таблицу ниже):

Управляющие символы называют Control-кодами (от английского слова "управление").

На старых примитивных устройствах символьного ввода-вывода — телетайпах — с каждой клавишей был однозначно связан формируемый код. Для формирования же управляющих кодов на телетайпах делалась специальная клавиша Control, удержание которой "обнуляло" три старших бита в коде, формируемом при нажатии "обычной" алфавитно-цифровой клавиши. Например, для ввода управляющего символа ESC с кодом 1Bh надо было нажать клавишу с символом ; (код 3Bh) или клавишу с символом (код 5Bh). Любой из этих кодов при обнуленных трех старших битах давал код 1Bh (символа ESC). Отсюда название клавиши Ctrl на современных клавиатурах.
 

Среди управляющих символов отметим символы, ипользуемые для расширения количества изображаемых символов. Это прежде всего SO (код 14) и SI (код 15), которые и раньше использовались для переключения наборов символов (например латинского и русского при 7-битовой кодировке).

Кроме того, это символ ESC (код 27). С этого кода начинаются последовательности символов, называемые управляющими. Эти последовательности также используются для переключения кодовых таблиц, а, кроме того, для изменения многих других свойств символьных устройств (клавиатур, дисплеев, принтеров и т.п.). Управляющие языки принтеров (фирм Epson, Hewlett-Paccard) основаны на таких Esc-последовательностях. Принцип формирования Esc-последовательности состоит в следующем: если в потоке кодов встретился код ESC, то несколько следующих кодов не являются кодами изображаемых символов (хотя и могут совпадать с ними), а несут информацию о команде для устройства.
 

Например, для Epson-совместимых принтеров:

Esc ! n — Эта последовательность из трех символов выдается на принтер в общем потоке символов. Символы ! n не печатаются, а вызывают переключение на встроенный шрифт принтера с номером n (диапазон номеров зависит от модели принтера). Это пример простой команды. Длина последовательности переменная и определяется видом команды. В данном случае символ ! говорит, что требуется переключить шрифт и что еще один символ (байт ) не должен печататься, а несет информацию о номере шрифта.
 

А вот более сложная команда: Esc & 0 n1nka1d1...dm. Символы & 0 после Esc говорят, что это команда, которая переопределяет конфигурацию символов текущего фонта, загруженного в ОЗУ принтера. Байты n1 и nk задают начальный и конечный коды диапазона символов, очертания которых будут переопределяться. Байт a1 задает размер матрицы, в которой рисуется символ. Байты d1 … dm определяют конфигурацию символов.