Кодирование целых и действительных чисел, текстовой информации

Кодирование данных двоичным кодом

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

Своя система кодирования существует в вычислительной технике — она называется двоичным кодированиеми основана на представлении данных последовательностью всего двух знаков: 0 и 1 – битов (см. 1.2).

Одним битом могут быть выражены два понятия: 0 или 1 (да или истина, черное или белое, истина или ложь и т. п.). Если количество битов увеличить до двух, то уже можно выразить четыре различных понятия:

00 01 10 11

Тремя битами можно закодировать восемь различных значений:

000 001 010 011 100 101 110 111

Увеличивая на единицу количество разрядов в системе двоичного кодирования, мы увеличиваем в два раза количество значений, которое может быть выражено в данной системе-, то есть общая формула имеет вид:

N=2m,

где N— количество независимых кодируемых значений;

m — разрядность двоичного кодирования, принятая в данной системе

Для кодирования целых чисел от 0 до 255 достаточно иметь 8 разрядов двоичного кода (8 бит). Шестнадцать бит позволяют закодировать целые числа от 0 до 65 535, а 24 бита — уже более 16,5 миллионов разных значений.

Для кодирования действительных чисел используют 80-разрядное кодирование. При этом число предварительно преобразуется в нормализованную форму:

3,1415926 = 0,31415926- 101

300 000 = 0,3-106

123 456 789 = 0,123456789-1010

Первая часть числа называется мантиссой, а вторая — характеристикой. Большую часть из 80 бит отводят для хранения мантиссы (вместе со знаком) и некоторое фиксированное количество разрядов отводят для хранения характеристики (тоже со знаком).

Если каждому символу алфавита сопоставить определенное целое число (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию. Для кодирования 256 различных символов достаточно восьми двоичных разрядов или 1 байт информации. Этого хватит, чтобы выразить различными комбинациями восьми битов все символы английского и русского языков, как строчные, так и прописные, а также знаки препинания, символы основных арифметических действий и некоторые общепринятые специальные символы, например символ "§".

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

Для английского языка, противоречия уже сняты. Институт стандартизации США (ANSI — American National Standard Institute) ввел в действие систему кодирования ASCII (American Standard Code for Information Interchange — стандартный код информационного обмена США). В системе ASCII закреплены две таблицы кодирования — базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам с номерами от 128 до 255.

Аналогичные системы кодирования текстовых данных были разработаны и в других странах. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.

Так, например, кодировка символов русского языка, известная как кодировка Windaws-1251 используется на большинстве локальных компьютеров, работающих на платформе Windows.

Другая распространенная кодировка носит название КОИ-8 (код обмена информацией, восьмизначный) — ее происхождение относится ко временам действия Совета Экономической Взаимопомощи государств Восточной Европы. Сегодня кодировка КОИ-8 имеет широкое распространение в компьютерных сетях на территории России и в российском секторе Интернета.

Международный стандарт, в котором предусмотрена кодировка символов русского алфавита, носит название кодировки ISO (International Standard Organization — Международный институт стандартизации). На практике данная кодировка используется редко.

В связи с изобилием систем кодирования текстовых данных, действующих в России, была принята для практического применения Универсальная система кодирования текстовых данных UNICODE. Эта система, основана на 16-разрядном кодировании символов. Шестнадцать разрядов позволяют обеспечить уникальные коды для 65 536 различных символов — этого поля достаточно для размещения в одной таблице символов большинства языков планеты. Эту кодировку поддерживает продукты Microsoft, начиная с Microsoft Office 97.

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

Пример. Определите мощность алфавита, с помощью которого записано сообщение, содержащее 8182 символа, если его объем составляет 5 Кбайт.

Решение. Переведите объем сообщения в биты: 1 Кбайт = 1024 байт. 5 Кбайт = 1024 * 5 = 5120 байт.

Для перевода в биты необходимо 5120 байт умножить на 8 (напоминаем, что 1 байт = 8 бит). Получим 40960 бит.

Количество бит, приходящееся на один символ алфавита = 40960 / 8182 = 5.

Количество символов алфавита N=2m = N=25 = 32. Мощность алфавита составит 5 бит.