Кодирование текстовых данных
Кодирование числовых данных
Восьмеричная и шестнадцатеричная системы счисления
Перевод чисел из десятичной системы в восьмеричную производится также как и в двоичную с помощью умножения и деления, только не на 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.