С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа "=", "(", "&" и т.п. и даже (обратите особое внимание!) пробелы между словами. Да, не удивляйтесь: пустое место в тексте тоже должно иметь свое обозначение.
Вспомним некоторые известные нам факты:
Множество символов, с помощью которых записывается текст, называется алфавитом.
Число символов в алфавите – это его мощность.
Формула определения количества информации: N = 2 b ,
где N – мощность алфавита (количество символов),
b – количество бит (информационный вес символа).
В алфавит мощностью 256 символов можно поместить практически все необходимые символы. Такой алфавит называется достаточным.
Т.к. 256 = 2 8 , то вес 1 символа – 8 бит.
Единице измерения 8 бит присвоили название 1 байт:
Двоичный код каждого символа в компьютерном тексте занимает 1 байт памяти.
Каким же образом текстовая информация представлена в памяти компьютера?
Тексты вводятся в память компьютера с помощью клавиатуры. На клавишах написаны привычные нам буквы, цифры, знаки препинания и другие символы. В оперативную память они попадают в двоичном коде. Это значит, что каждый символ представляется 8-разрядным двоичным кодом.
Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Таким образом, человек различает символы по их начертанию, а компьютер — по их коду.
Удобство побайтового кодирования символов очевидно, поскольку байт — наименьшая адресуемая часть памяти и, следовательно, процессор может обратиться к каждому символу отдельно, выполняя обработку текста. С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации.
Теперь возникает вопрос, какой именно восьмиразрядный двоичный код поставить в соответствие каждому символу.
Понятно, что это дело условное, можно придумать множество способов кодировки.
Все символы компьютерного алфавита пронумерованы от 0 до 255. Каждому номеру соответствует восьмиразрядный двоичный код от 00000000 до 11111111. Этот код просто порядковый номер символа в двоичной системе счисления.
Таблица, в которой всем символам компьютерного алфавита поставлены в соответствие порядковые номера, называется таблицей кодировки.
Для разных типов ЭВМ используются различные таблицы кодировки.
Международным стандартом для ПК стала таблица ASCII (читается аски) (Американский стандартный код для информационного обмена).
Таблица кодов ASCII делится на две части.
Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от (00000000), до 127 (01111111).
Структура таблицы кодировки ASCII
Порядковый номер
Символ
0 — 31
00000000 — 00011111
Символы с номерами от 0 до 31 принято называть управляющими.
Их функция – управление процессом вывода текста на экран или печать, подача звукового сигнала, разметка текста и т.п.
32 — 127
00100000 — 01111111
Стандартная часть таблицы (английский). Сюда входят строчные и прописные буквы латинского алфавита, десятичные цифры, знаки препинания, всевозможные скобки, коммерческие и другие символы.
Символ 32 — пробел, т.е. пустая позиция в тексте.
Все остальные отражаются определенными знаками.
128 — 255
10000000 — 11111111
Альтернативная часть таблицы (русская).
Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер.
Кодовая страница в первую очередь используется для размещения национальных алфавитов, отличных от латинского. В русских национальных кодировках в этой части таблицы размещаются символы русского алфавита.
Первая половина таблицы кодов ASCII
Обращаю ваше внимание на то, что в таблице кодировки буквы (прописные и строчные) располагаются в алфавитном порядке, а цифры упорядочены по возрастанию значений. Такое соблюдение лексикографического порядка в расположении символов называется принципом последовательного кодирования алфавита.
Для букв русского алфавита также соблюдается принцип последовательного кодирования.
Вторая половина таблицы кодов ASCII
К сожалению, в настоящее время существуют пять различных кодировок кириллицы (КОИ8-Р, Windows. MS-DOS, Macintosh и ISO). Из-за этого часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую.
Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 ("Код обмена информацией, 8-битный"). Эта кодировка применялась еще в 70-ые годы на компьютерах серии ЕС ЭВМ, а с середины 80-х стала использоваться в первых русифицированных версиях операционной системы UNIX.
От начала 90-х годов, времени господства операционной системы MS DOS, остается кодировка CP866 ("CP" означает "Code Page", "кодовая страница").
Компьютеры фирмы Apple, работающие под управлением операционной системы Mac OS, используют свою собственную кодировку Mac.
Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.
Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251.
С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode. Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.
2. Различные кодировки кириллицы.
1. Двоичное кодирование текстов. Кодовые таблицы.
Как известно, вся информация, которая попадает в компьютер, преобразуется в последовательность электрических импульсов. Наличие импульса принято условно обозначать "1", а его отсутствие -"О". Такой способ кодирования информации называется двоичным или бинарным. Один двоичный символ получил название бит. (bit — от английскогоbinary digit — "двоичная цифра").
При вводе в компьютер текстовой информации каждая буква кодируется определенным числом, а при выводе на внешние устройства (экран или печать) для восприятия человеком по этим числам строятся изображения букв. Соответствие между набором букв и числами называется кодировкой символов.
Традиционно для кодирования одного символа используется количество информации, равное 1 байту (8 битам). Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код (или соответствующий ему двоичный код). Код символа хранится в памяти компьютера, где занимает, как уже говорилось, 1 байт. При таком способе можно закодировать 256 различных символов (256 = 2 8 ). Такое количество символов вполне достаточно для представления текстовой информации, включая прописные и заглавные буквы русского алфавита, цифры, знаки, графические символы и т. д.
Каждому символу такого алфавита ставится в соответствие уникальный десятичный код от 0 до 255, а каждому десятичному коду соответствует 8-разрядный двоичный код от 00000000 до 11111111. Таким образом, компьютер различает символы по их коду.
Для разных типов ЭВМ и операционных систем используются различные таблицы кодировки, отличающиеся порядком размещения символов алфавита в кодовой таблице.
В настоящее время существует несколько различных кодировок (кодовых таблиц) для русских букв. Поэтому если текст создан в одной кодировке, то он не будет правильно отображаться в другой.
Понятно, что каждая кодировка задается своей кодовой таблицей. Одному и тому же двоичному коду в различных кодировках соответствуют различные символы.
Для того чтобы стало возможным чтение и редактирования текста, набранного в другой кодировке, используются программы перекодирования русского текста. Некоторые текстовые редакторы(например,MSWordи др.) содержат встроенные программы-конверторы, позволяющие читать текст в различных кодировках.
Присвоение символу конкретного кода является вопросом соглашения, которое и фиксируется в конкретной кодовой таблице. В качестве международного стандарта принята кодовая таблица ASCII. В этой кодовой таблице латинские буквы (прописные и строчные) располагаются в алфавитном порядке. Расположение цифр также упорядочено по возрастанию значений. Это правило соблюдается и в других таблицах кодировки и называется принципом последовательного кодирования алфавитов.
Стандартными в этой таблице кодов ASCII являются только первые 128 символов, т. е. символы с номерами от нуля (двоичный код 00000000) до 127 (01111111). Сюда входят буквы латинского алфавита, цифры, знаки препинания, скобки и некоторые другие символы. Остальные 128 кодов, начиная со 128 (двоичный код 10000000) и кончая 255 (11111111), используются для кодировки букв национальных алфавитов, символов псевдографики и научных символов.
1. Двоичное кодирование звуковой информации.
Таблица соответствия кодов — представлений чисел. (десятичные от 1 до 255 и соответствующие восьмеричные, шестнадцатиричные, двоичные, ASCII коды).
ASCII (англосаксы говорят American Standard Code for Information Interchange) — американский стандартный код для обмена информацией. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной. В компьютерах обычно используют расширения ASCII с задействованной второй половиной байта.
Таблица 1. десятичные числа от 0 до 127.
Dec/ дес яти чный |
Oct/ вось мер ичн ый |
hex/ шес тна дца тер ичн |
Bin/ двоич ный |
ASCII симв |
пояснение | ввод с клавиатуры | Dec/ дес яти чный |
Oct/ вось мер ичн ый |
hex/ шес тна дца тер ичн |
Bin/ двоич ный |
ASCII симв |
Dec/ дес яти чный |
Oct/ вось мер ичн ый |
hex/ шес тна дца тер ичн |
Bin/ двоич ный |
ASCII симв |
Dec/ дес яти чный |
Oct/ вось мер ичн ый |
hex/ шес тна дца тер ичн |
Bin/ двоич ный |
ASCII симв |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
000 | 00000000 | NUL | Пустой ASCII символ |
CTRL-@ |
32 | 040 | 20 | 00100000 | пробел/space | 64 | 100 | 40 | 01000000 | @ | 96 | 140 | 60 | 01100000 | ` | ||
1 | 001 | 1 | 00000001 | SOH | Начало заголовка | CTRL-A | 33 | 041 | 21 | 00100001 | ! | 65 | 101 | 41 | 01000001 | A | 97 | 141 | 61 | 01100001 | a |
2 | 002 | 2 | 00000010 | STX | Начало текста | CTRL-B | 34 | 042 | 22 | 00100010 | " | 66 | 102 | 42 | 01000010 | B | 98 | 142 | 62 | 01100010 | b |
3 | 003 | 3 | 00000011 | ETX | Конец текста | CTRL-C | 35 | 043 | 23 | 00100011 | # | 67 | 103 | 43 | 01000011 | C | 99 | 143 | 63 | 01100011 | c |
4 | 004 | 4 | 00000100 | EOT | Конец передачи | CTRL-D | 36 | 044 | 24 | 00100100 | $ | 68 | 104 | 44 | 01000100 | D | 100 | 144 | 64 | 01100100 | d |
5 | 005 | 5 | 00000101 | ENQ | Запрос | CTRL-E | 37 | 045 | 25 | 00100101 | % | 69 | 105 | 45 | 01000101 | E | 101 | 145 | 65 | 01100101 | e |
6 | 006 | 6 | 00000110 | ACK | Подтвержд. получения | CTRL-F | 38 | 046 | 26 | 00100110 | & | 70 | 106 | 46 | 01000110 | F | 102 | 146 | 66 | 01100110 | f |
7 | 007 | 7 | 00000111 | BEL | Звуковой сигнал | CTRL-G | 39 | 047 | 27 | 00100111 | ‘ | 71 | 107 | 47 | 01000111 | G | 103 | 147 | 67 | 01100111 | g |
8 | 010 | 8 | 00001000 | BS** | Обратный ход каретки | CTRL-H | 40 | 050 | 28 | 00101000 | ( | 72 | 110 | 48 | 01001000 | H | 104 | 150 | 68 | 01101000 | h |
9 | 011 | 9 | 00001001 | TAB** | Горизонт. табуляция | CTRL-I | 41 | 051 | 29 | 00101001 | ) | 73 | 111 | 49 | 01001001 | I | 105 | 151 | 69 | 01101001 | i |
10 | 012 | A | 00001010 | LF** | Начало строки | CTRL-J | 42 | 052 | 2A | 00101010 | * | 74 | 112 | 4A | 01001010 | J | 106 | 152 | 6A | 01101010 | j |
11 | 013 | B | 00001011 | VT | Вертикальная табуляция | CTRL-K | 43 | 053 | 2B | 00101011 | + | 75 | 113 | 4B | 01001011 | K | 107 | 153 | 6B | 01101011 | k |
12 | 014 | C | 00001100 | FF | Начало формы | CTRL-L | 44 | 054 | 2C | 00101100 | , | 76 | 114 | 4C | 01001100 | L | 108 | 154 | 6C | 01101100 | l |
13 | 015 | D | 00001101 | CR** | Возврат каретки | CTRL-M | 45 | 055 | 2D | 00101101 | — | 77 | 115 | 4D | 01001101 | M | 109 | 155 | 6D | 01101101 | m |
14 | 016 | E | 00001110 | SO | Передача | CTRL-N | 46 | 056 | 2E | 00101110 | . | 78 | 116 | 4E | 01001110 | N | 110 | 156 | 6E | 01101110 | n |
15 | 017 | F | 00001111 | SI | Прием | CTRL-O | 47 | 057 | 2F | 00101111 | / | 79 | 117 | 4F | 01001111 | O | 111 | 157 | 6F | 01101111 | o |
16 | 020 | 10 | 00010000 | DLE | Закр. канала связи | CTRL-P | 48 | 060 | 30 | 00110000 | 80 | 120 | 50 | 01010000 | P | 112 | 160 | 70 | 01110000 | p | |
17 | 021 | 11 | 00010001 | DC1 | Упр. устройством 1 | CTRL-Q | 49 | 061 | 31 | 00110001 | 1 | 81 | 121 | 51 | 01010001 | Q | 113 | 161 | 71 | 01110001 | q |
18 | 022 | 12 | 00010010 | DC2 | Упр. устройством 2 | CTRL-R | 50 | 062 | 32 | 00110010 | 2 | 82 | 122 | 52 | 01010010 | R | 114 | 162 | 72 | 01110010 | r |
19 | 023 | 13 | 00010011 | DC3 | Упр. устройством 3 | CTRL-S | 51 | 063 | 33 | 00110011 | 3 | 83 | 123 | 53 | 01010011 | S | 115 | 163 | 73 | 01110011 | s |
20 | 024 | 14 | 00010100 | DC4 | Упр. устройством 4 | CTRL-T | 52 | 064 | 34 | 00110100 | 4 | 84 | 124 | 54 | 01010100 | T | 116 | 164 | 74 | 01110100 | t |
21 | 025 | 15 | 00010101 | NAK | Отрицание получения | CTRL-U | 53 | 065 | 35 | 00110101 | 5 | 85 | 125 | 55 | 01010101 | U | 117 | 165 | 75 | 01110101 | u |
22 | 026 | 16 | 00010110 | SYN | Синхронизация | CTRL-V | 54 | 066 | 36 | 00110110 | 6 | 86 | 126 | 56 | 01010110 | V | 118 | 166 | 76 | 01110110 | v |
23 | 027 | 17 | 00010111 | ETB | Конец пакета | CTRL-W | 55 | 067 | 37 | 00110111 | 7 | 87 | 127 | 57 | 01010111 | W | 119 | 167 | 77 | 01110111 | w |
24 | 030 | 18 | 00011000 | CAN | Отмена | CTRL-X | 56 | 070 | 38 | 00111000 | 8 | 88 | 130 | 58 | 01011000 | X | 120 | 170 | 78 | 01111000 | x |
25 | 031 | 19 | 00011001 | EM | Закрытие среды | CTRL-Y | 57 | 071 | 39 | 00111001 | 9 | 89 | 131 | 59 | 01011001 | Y | 121 | 171 | 79 | 01111001 | y |
26 | 032 | 1A | 00011010 | SUB | Замена | CTRL-Z | 58 | 072 | 3A | 00111010 | : | 90 | 132 | 5A | 01011010 | Z | 122 | 172 | 7A | 01111010 | z |
27 | 033 | 1B | 00011011 | ESC | Завершение | CTRL-[ | 59 | 073 | 3B | 00111011 | ; | 91 | 133 | 5B | 01011011 | [ | 123 | 173 | 7B | 01111011 | < |
28 | 034 | 1C | 00011100 | FS | Разделитель файлов | CTRL- | 60 | 074 | 3C | 00111100 | 94 | 136 | 5E | 01011110 | ^ | 126 | 176 | 7E | 01111110 |
Таблица 2. десятичные числа от 128 до 255.