Кодирование текстовых данных

Кодирование числовых данных

Восьмеричная и шестнадцатеричная системы счисления

Перевод чисел из десятичной системы в восьмеричную производится также как и в двоичную с помощью умножения и деления, только не на 2, а на 8.

Например, 58,32(10)

58 : 8 = 7 (2 в остатке)

7 : 8 = 0 (7 в остатке)

0,32 * 8 = 2,56

0,56 * 8 = 4,48

0,48 * 8 = 3,84, …

58,32(10) = 72,243…(8)

Перевод чисел из десятичной системы счисления в 16-ричную производится аналогично. 567(10)0 = 237(16)

 

 

Соответствие чисел в различных системах счисления

Десятичная Шестнадцатеричная Восьмеричная Двоичная
A
B
C
D
E
F

 

Для перевода целого двоичного числа в восьмеричное необходимо разбить его справа налево на группы по 3 цифры (самая левая группа может содержать менее трех двоичных цифр), а затем каждой группе поставить в соответствие ее восьмеричный эквивалент. Такие группы называют двоичными триадами.

Например,

11011001 = 11 011 001 = 331(8)

Перевод целого двоичного числа в шестнадцатеричное производится путем разбиения данного числа на группы по 4 цифры – двоичные тетрады.

1100011011001 = 1 1000 1101 1001 = 18D9(16)

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

0,1100011101(2) = 0,110 001 110 100 = 0,6164(8)

0,1100011101(2) = 0,1100 0111 0100 = С74(16)

Перевод восьмеричных (шестнадцатеричных) чисел в двоичные производится обратным путем – сопоставлением каждому знаку числа соответствующей тройки (четверки) двоичных цифр.

А1F(16) = 1010 0001 1111(2)

127(8) = 001 010 111(2)

Простота подобных преобразований связана с тем, что числа 8 и 16 являются целыми степенями числа 2. Этой простотой объясняется популярность восьмеричной и шестнадцатеричной систем счисления.

 

Кодирование числовых данных по сути представляет собой перевод чисел, записанных в общепринятой десятичной системе счисления в двоичную систему счисления. В этом случае двоичную форму записи десятичного числа можно назвать его двоичным кодом. Всякое десятичное число прежде, чем оно попадает в память компьютера для обработки преобразуется в его двоичный эквивалент, а полученный результат прежде, чем появиться на экране видеотерминала или на бумаге после печати, переводится из двоичной системы счисления в десятичную. Преобразование это происходит автоматически с помощью специальных устройств кодирования/декодирования.

Начиная с конца 60-х годов, компьютеры все больше стали использоваться для обработки текстовых данных и в настоящее время большая часть персональных компьютеров в мире (и наибольшее время) занято обработкой именно текстов.

Традиционно для кодирования одного символа используется 1 байт (8 двоичных разрядов). Это позволяет закодировать N = 28 – 256 различных символов, которых обычно бывает достаточно для представления текстовых данных (прописные и заглавные буквы латинского алфавита, цифры, знаки, графические символы и т.д., а также прописные и заглавные буквы одного национального алфавита).

Придвоичном кодировании текстовых данных каждому символу ставится в соответствие своя уникальная последовательность из восьми нулей и единиц, свой уникальный двоичный код от 00000000 до 11111111 (десятичный код от 0 до 255).

Таким образом, человек различает символы по их начертанию, а компьютер – по их коду. При выводе символа на экран монитора производится декодирование: по двоичному коду символа на экране строится его изображение. Кодирование и декодирование происходят в компьютере автоматически за миллионные доли секунды.

Присвоение символу конкретного двоичного кода – это вопрос соглашения, которое фиксируется в кодовой таблице ASCII (стандартный код информационного обмена). Первые 33 кода (с 0 по 32) соответствуют не символам, а операциям (перевод строки, ввод пробела и т.д.). Коды с 33 по 127 являются интернациональными и соответствуют символам латинского алфавита цифрам, знакам арифметических операций и знакам препинания.

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

Хронологически одним из первых стандартов кодирования русских букв на компьютерах был код КОИ-8 («Код обмена информацией 8-битный»). Эта кодировка применяется на компьютерах с операционной системой UNIX.

Наиболее распространенная кодировка – это стандартная кириллическая кодировка Microsoft Windows, обозначаемая сокращением СР1251 («СР» означает «Code Page», «кодовая страница»). Все Windows-приложения, работающие с русским языков, поддерживают эту кодировку (Windows 1251, Win 1251).

Для работы в среде операционной системы MS-DOS используется «альтернативная» кодировка, в терминологии фирмы Microsoft - СР866 (КОИ-7).

Фирма Apple разработала для компьютеров Macintosh свою собственную кодировку русских букв (Мас).

Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.

Одному и тому же двоичному коду в разных кодовых таблицах ставится в соответствие различные символы.

Двоичный код Десятичный код КОИ8 СР1251 СР866 Мас ISO
б В - - Т

 

К счастью, в большинстве случаев пользователь не должен заботиться о перекодировках текстовых документов. При работе в приложениях Windows предусмотрена возможность автоматической перекодировки документов, созданных в приложениях MS-DOS. При работе в Интернет с использованием броузеров Internet Explorer и Netscape Communicator происходит автоматическая перекодировка Web-страниц.

Существует также международный стандарт Unicode, который отводит на каждый символ не один байт, а два, и потому с его помощью можно закодировать не 256 символов, а N = 216 = 65536 различных символов. Кодировка используется в основном для передачи данных по сети Internet, ее поддерживает платформа Microsoft Windows&Office.