Представление информации

Представление числовой информации

Целые числа

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

В беззнаковом целом все разряды используются для двоичной записи числа. Соответственно, в n-разрядной сетке можно представить числа от 0 до 2n-1. (Для 1-байтного беззнакового целого диапазон значений будет от 0 до 255; для 2-байтного — от 0 до 65535).

Если нужно представлять не только положительные, но и отрицательные значения, обычно используют дополнительный код. Он имеет следующие особенности:

  • старший («знаковый») разряд отрицательного числа имеет значение 1, а положительного — 0;
  • число 0 (ноль) имеет единственное представление, в котором все разряды равны нулю;
  • сложение чисел со знаком в дополнительном коде выполняется так же, как сложение чисел без знака, включая знаковый разряд, который при сложении ничем не отличается от других разрядов.

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

Для отрицательных — 2n-|m|, где m — кодируемое число, n — количество разрядов в сетке.

Фактически, дополнительный код — это число, которое нужно добавить к модулю исходного, чтобы достичь переполнения разрядной сетки. От этого и происходит название «дополнительный».

Для получения дополнительного кода отрицательного числа следует сделать следующее:

  1. Записать модуль числа в прямом коде.
  2. Инвертировать каждый разряд получившейся записи (заменить нули на единицы, а единицы — на нули). Получится так называемый «обратный код».
  3. Прибавить к результату единицу.

Пример работы с числами в дополнительном коде

Запишем в дополнительном 8-разрядном коде числа 72 и -46. Затем найдем их сумму и преобразуем результат в десятичную запись.

1 число.

7210 = 10010002. Запись в восьмиразрядной сетке: 01001000.

2 число.

-4610 = -1011102.

  1. Записываем модуль числа в 8-разрядной сетке: 00101110.
  2. Инвертируем разряды полученной записи: 11010001.
  3. Прибавляем к результату единицу:

Таким образом получаем запись в дополнительном коде: 11010010.

Сложим полученные числа:

Перенос из старшего разряда выходит за разрядную сетку и просто отбрасывается: 00011010.

Полученное число переведем в десятичную систему счисления:

110102 = 2610.

Действительно, 72 - 46 = 26.

Числа с плавающей точкой

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

Нормализованная запись отличного от нуля действительного числа — это запись вида a = m * Pq, где q — целое число, а m — правильная P-ичная дробь, у которой первая цифра после запятой не равна нулю, то есть

1/P ≤ m < 1.

При этом m называют мантиссой, а q — порядком числа.

Примеры:

3,1415926 = 0, 31415926 ⋅ 101;

1250000=0,125 ⋅ 107;

0,123456789 = 0,123456789 ⋅ 100;

0,000076 = 0,76 ⋅ 10-4;

1000,00012 = 0,100000012 ⋅ 24. (порядок записан в десятичной системе)

Для хранения чисел с плавающей точкой в компьютерах обычно отводится 4, 8 или 10 байт.

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа.

Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего до наибольшего представимого числа.

Найти в Интернет более подробную информацию о кодировании чисел

Кодирование текстовой информации

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

Современные кодовые таблицы ведут начало от американского стандартного кода обмена информацией ASCII (American Standard Code for Information Interchange). Он был семибитным и, соответственно, позволял представить 27=128 различных символов. Таблица включала буквы латинского алфавита, цифры, основные знаки и управляющие символы (перевод строки, возврат каретки, табуляция и др.).

В дальнейшем широкое распространение получили восьмибитные кодировки, в которых каждый символ текста был представлен полным байтом. В большинстве из них первые 128 кодов повторяли таблицу ASCII, а следующие («верхняя половина кодовой таблицы») использовались для представления символов национальных алфавитов и полиграфических знаков.

Во многих случаях для одного и того же языка было создано несколько кодировок. Например, для кодирования русскоязычных текстов достаточно широко использовалось (и до сих пор в некоторых случаях используются) пять кодировок:

  • KOI8-r (Код Обмена Информацией 8-битный Русский). Основные сферы использования — компьютеры с операционными системами Unix/Linux, электронная почта, редко — сайты.
  • CP-866 (Code Page 866). Тексты, созданные на компьютерах, работавших под MS-DOS (и совместимыми операционными системами), сеть FidoNet.
  • CP-1251 (также Windows-1251). Документы, созданные под MS Windows. Сайты.
  • MacCyrillic (Кириллическая кодировка Mac OS). Документы, созданные под классической Mac OS.
  • ISO-8859-5 (5 таблица стандарта 8859 International Organization for Standardization). Единственная 8-битная кириллическая кодировка, имеющая статус международного стандарта. На практике в России почти не встречается. Используется в Болгарии и Сербии на Unix, а также для русскоязычных текстов в западных странах.

Основные недостатки восьмибитных кодировок:

  • Множественные варианты кодировок для одного и того же языка и, как следствие, проблемы с переносом текстов между компьютерами, использующими разные варианты.
  • Невозможность использования в одном тексте (без дополнительных программных ухищрений) разных систем письма (за исключением сочетаний базового латинского алфавита с каким-либо иным алфавитным письмом).
  • Невозможность использования для языков с иероглифической системой письма.

Для устранения этих недостатков в 1991 году был предложен стандарт Unicode («Юникод»). Он включает универсальный набор символов (UCS, Universal Character Set) и форматы машинного представления их кодов (UTF, Unicode Transformation Format).

Первая версия Юникода представляла собой кодировку с фиксированным размером символа в 16 бит, то есть общее число кодов было 216 (65 536). Отсюда происходит практика обозначения символов четырьмя шестнадцатеричными цифрами (например, U+0410). При этом в Юникоде планировалось кодировать не все существующие символы, а только те, которые необходимы в повседневном обиходе.

В дальнейшем было принято решение расширить набор символов за счет различных способов кодирования. Поскольку в ряде систем уже началось использование 16-битной версии Unicode, за основными символами сохранили принятые в ней коды (образовавшие «основную многоязычную плоскость»), а для более редко применяемых назначили «суррогатные пары» — четырехбайтные коды. Эта система кодирования получила обозначение UTF-16. В UTF-16 можно отобразить только 220+216−2048 (1112064) символов, это число и было выбрано в качестве окончательной величины кодового пространства Юникода. Но и этого более чем достаточно — сейчас используется немногим более 100000 кодовых позиций. Unicode включает символы практически всех современных, а также многих древних систем письма.

Для обеспечения совместимости со старыми системами, использовавшими 8-битное кодирование, была разработана система кодирования UTF-8. Она использует коды переменной длины: для символов, входящих в ASCII, применяются коды длиной 1 байт, полностью совпадающие с кодами ASCII. Для остальных символов — коды длиной от 2 до 4 байт (теоретически, до 6).

Существует также UTF-32, в которой для записи любого символа используется 4 байта. Из-за очень неэкономного расхода памяти (в 2-4 раза больше, чем UTF-8, и почти вдвое больше, чем UTF-16) на практике она используется достаточно редко.

В Интернет наибольшее распространение получила система кодирования UTF-8, в MS Windows преимущественно используют UTF-16, в Unix-подобных ОС (включая Linux и Mac OS X) — в основном UTF-8.

Кодирование графической и звуковой информации

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

И для одного, и для другого вида информации существуют два способа представления: либо искусственно разбить на малые элементы, либо описать правила формирования.

Изображение

1) Растровое представление Изображение разбивается сеткой горизонтальных и вертикальных линий на квадратные элементы — пикселы (pixel = PICtureS ELement). Считается, что весь пиксел окрашен в один из цветов, входящих в палитру изображения. Цвету (оттенку) ставится в соответствие целое неотрицательное число, двоичное представление которого и записывается в память компьютера. Чем больше бит отводится на представление одного пиксела, тем больше оттенков может использоваться в изображении (2n, где n — количество бит в коде пиксела). Для штрихового черно-белого изображения достаточно 1 бита на пиксел, для изображений с небольшим числом оттенков используют палитры в 16 (4 бита/пиксел) или 256 (8 бит/пиксел) цветов. Для черно-белых фотографий — 256 уровней серого (те же 8 бит/пиксел). Если же нужно работать с цветными фотоснимками, чаще всего на 1 пиксел расходуется по 4 байта (это дает свыше 4 миллиардов кодов) — так называемый режим «истинных цветов» (True Color). Глубина кодирования 2 байта (16 бит) на пиксел (так называемый режим «тысяч цветов» или «высококачественного цвета» — High Color) в последнее время используют всё реже. Точность растрового представления изображения также связана с размерами пикселов, Чем они мельче (и, соответственно, чем их больше), тем менее заметна «ступенчатая» структура картинки. Однако с ростом разрешения (числа пикселов на единицу длины) растет и объем памяти, занимаемой изображением. В общем случае объем памяти для растрового изображения без учета сжатия можно определить по формуле

V = a ⋅ b ⋅ n,

где a, b — количество пикселов по горизонтали и вертикали,

n — глубина цвета;

или

V = x ⋅ y ⋅ r2 ⋅ n,

где x, y — ширина и высота изображения, дюйм;

r — разрешение, пикселов/дюйм;

n — глубина цвета.

2) Векторное представление

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

Преимущества векторной графики над растровой:

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

С другой стороны, у векторной графики есть два фундаментальных недостатка:

  • Не всякое изображение может быть легко представлено в векторном виде. Кроме того, количество памяти и времени на отображение зависит от числа объектов и их сложности. Хотя теоретически можно добиться от векторного изображения полного сходства с фотографией, на практике из-за сложности полученного представления этого не делают.
  • Перевод векторной графики в растр достаточно прост. Но обратного пути, как правило, нет — во-первых, трассировка растра обычно не обеспечивает высокого качества векторного рисунка; во-вторых, не существует автоматического способа однозначно выделить составляющие изображение фигуры.

Звук

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

Число отсчетов в единицу времени называют частотой дискретизации.

Количество различных уровней, которые могут быть записаны, ограничено разрядностью используемых двоичных чисел. То есть точное значение величины (например, напряжения) приближенно заменяется ближайшим из заданных уровней — происходит квантование по уровню. Всё преобразование в целом называют «аналогово-цифровым преобразованием».

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

Очевидно, что качество звукозаписи тем выше, чем меньше интервалы времени между отсчетами (т.е. выше частота дискретизации) и больше уровней при квантовании (т.е. больше разрядность). Например, для речи достаточно частоты дискретизации 11 кГц при 8-битном квантовании (и даже при 8 кГц слова остаются достаточно разборчивыми), а для качественной записи музыки используют частоту дискретизации 44,1 кГц и выше при 16-битном квантовании. Однако, при этом увеличивается и объем занимаемой звукозаписью памяти.

Рассчитать этот объем можно по формуле:

V = f ⋅ t ⋅ n,

где f — частота дискретизации, Гц;

t — время, с;

n — разрядность отсчета.

Например, 1 минута музыкальной записи займет (если не использовать сжатие):

f = 44,1 кГц = 44100 Гц;

t = 1 мин = 60 с;

n = 16 бит = 2 байт.

V = 44100 Гц ⋅ 60 с ⋅ 2 байт = 5292000 байт = 5,05 Мбайт

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

Типовые задания по теме «Представление информации в компьютере»

  • И-1. Кодирование текстовой информации
  • И-2. Кодирование графической информации (растровая графика)
  • И-3. Кодирование звуковой информации
  • И-4. Коды чисел со знаком

Задания представлены в формате PDF.