Пример. Если мы разобьем входной сигнал по амплитуде на 65 536 уровней (то
есть для хранения каждого измерения будем использовать 2 байта) и измерим его
с частотой 110 ООО раз в секунду, то получим гарантированный запас по качеству.
Несложный подсчет покажет, что для хранения музыкального фрагмента длитель
ностью 3 минуты, оцифрованного таким образом, требуется 2 х 110 ООО х 60 х 3 =
= 39 600 000 байт, или 38,7 Мбайт компьютерной памяти. Примерно такой размер
имеют музыкальные фрагменты, записанные на современные компакт-диски.
Для хранения в памяти персонального компьютера, а в особенности для передачи звуковых файлов через Интернет, объемы их слишком велики. Для уменьшения объема данных в несколько раз применяются специальные процедуры сжатия.
Из исходного оцифрованного звука после сжатия получаются данные в 8 -1 0 раз меньшего объема. Одним из популярных форматов хранения звуковой инфор
мации, получаемой при помощи таких специальных процедур, является MP3. Надо заметить, что при сжатии данных в формат MP3 часть звуковой информации не
обратимо теряется, поэтому он называется форматом сжатия звука с потерями.
В том случае, когда данные, несущие звуковую информацию, требуется преобра
зовать в звуковой сигнал, записанную в памяти последовательность байтов по
дают на вход цифроаналогового преобразователя (ЦАП). Это устройство преоб
разует числа сначала в уровни электрического сигнала, затем сглаживает эти уровни, преобразуя их в аналоговый электрический сигнал, а потом аналоговый сигнал подается на воспроизводящее устройство (аудиоколонки или головные телефоны).
Видеоданные
Видеоданные представляют собой практически те же данные в растровом гра
фическом формате, и получаются они примерно таким же образом, как и цифровая фотография. Многие современные цифровые фотоаппараты позволяют произво
дить видеосъемку, а цифровые видеокамеры — делать фотографии. Механизм один и тот же, но в случае, когда происходит видеосъемка, фотографии делаются с боль-
320
Глава 11. Представление данных в компьютере т о й скоростью одна за другой и последовательно записываются в цифровом виде в память видеокамеры. Эта последовательность фотографий образует видеоряд, аналогичный кадрам на кинопленке.
11.1.5. Служебные данные
Когда мы производим сбор первичных данных и перевод их в цифровую форму, мы осуществляем кодирование сигнала выбранным способом и последовательно записываем полученные коды в память компьютера. Это верно как для символьной информации, так и для растровых графических данных при цифровой фото- или видеосъемке, при кодировании аудиосигнала процесс происходит примерно так же.
Однако следующим шагом,
который требуется, чтобы хранить и передавать данные, является их оформление. Например, введенный нами необработанный текст пре
образуется текстовым процессором в документ. В документе, кроме самого текста, присутствует множество объектов, имеющих нетекстовую природу: рамки, раз
делительные линии, блоки, признаки разбиения на страницы и форматирования, другие служебные конструкции. Аналогично для хранения графических данных изображение определенным образом разбивается на слои, каналы, градации яр
кости, над данными производятся операции сжатия для уменьшения хранимого и передаваемого объема. Таким образом, к данным, хранящим собственно символь
ную, аудио- или видеоинформацию, добавляются специальные
служебные данные, данные структурируются, и для хранения в постоянной памяти они приводятся к типу файлов определенного формата.
Любой
файл, в общем случае, является последовательностью байтов, которая за
писывается на физический носитель и получает имя (или некоторый идентифика
тор). Как известно, файлы имеют разный формат. Слово «формат» в данном случае говорит о том, что разные группы байтов, записанные внутри файла, имеют разное назначение. Часть байтов несет в себе непосредственно данные, а часть — информа
цию о том, как эти данные правильно восстановить и отобразить на экране компью
тера или воспроизвести другим необходимым образом. Таким образом, любой файл представляет собой неоднородную структуру данных, и тип файла непосредственно связан, с той последовательностью действий, которую нужно проделать, чтобы
данные из файла превратились в сигналы, несущие информацию.
11.2. Системы счисления
11.2.1. Определение и классификация
Числа отображаются с помощью системы счисления.
'У', > й |||
Совокупность символов, при помощи которых записывается система счисления, называется
алфавитом системы счисления. Количество символов, составляющих алфавит, называется его
размерностью. 11.2. Системы счисления
321
Системы счисления делятся на позиционные и непозиционные. В
позиционной системе счисления значение каждой цифры в записи числа зависит от ее позиции (разряда). В
непозиционной системе счисления для обозначения чисел вводятся специальные знаки, количественное значение которых всегда одинако
во и не зависит от их места в записи числа, например, числу 25 в непозиционной римской системе счисления соответствует запись XXV, а числу 53 соответствует запись LIII.
Последовательность чисел, каждое из которых задает «вес» соответствующего разряда, называется
базисом позиционной системы счисления. Основным досто
инством позиционной системы счисления является возможность записи произ
вольного числа при помощи ограниченного набора символов.
В табл. 11.4 сравниваются несколько двоичных и десятичных чисел, находящих
ся в одной и той же позиции.Обе эти системы счисления являются позиционными.
Значение каждой цифры в числе легко определить, воспользовавшись формулой
V = B N.Здесь
V — значение,
В — основание системы счисления,
N — порядковый номер позиции.
Таблица 11.4. Двоичные и десятичные числа
ДвоичныеДесятичныеДвоичное числоДвоичное числоСтепеньДесятичное числоСтепень(двоичное(десятичное(десятичное представление)представление)представление)1
12°
110°102 21
101 0 11004 22
100ю 2
10008 23
10001031000016 24
100001041 0 0 0 0 032 25
1 0 0 0 0 0ю 5
1 0 0 0 0 0 064 26
1 0 0 0 0 0 0106Очевидно, что десятичная запись намного удобнее двоичной, поскольку более компактна. Так, в 6-й позиции в десятичной системе закодирован миллион, а в дво
ичной — только шестьдесят четыре. В двоичной системе представление чисел по
лучается весьма громоздким, но оно
идеально для компьютера, так как не требует сложных инженерных и технологических решений.
Позиционную систему счисления называют
традиционной, если ее базис об
разуют члены геометрической прогрессии, а значения цифр есть целые неот
рицательные числа. Знаменатель
Р геометрической прогрессии, члены которой образуют базис традиционной системы счисления, называется
основанием этой системы счисления. Традиционные системы счисления с основанием
Р иначе на
зывают
Р-ичными. 322
Глава 11.
Представление данных в компьютереДля того чтобы показать, в какой системе счисления записано число, после числа указывают основание в качестве нижнего индекса. Например 102 — два в дво
ичной системе счисления, или 210 — два в десятичной системе счисления.
Если в позиционной системе счисления базис не является геометрической прогрессией или значения цифр могут принимать отрицательные значения, такую систему счисления называют
нетрадиционной (рис. 11.4).
j
Шестнадцатеричная
Рис. 11.4. Системы счисления
Любое натуральное число можно записать в Р-ичной системе счисления един
ственным образом. В более строгом виде это утверждение можно сформулировать в следующем виде.
Пусть
Р — произвольное натуральное число, большее единицы. Существует единственное представление любого натурального числаХ в виде степенного ряда:
X = а пР п +ап_хР пх +... + а {Р + а0, где 0
<>а{ <Р,
O ^ i ^ n .В Р-ичной системе счисления любое неотрицательное вещественное число, со
держащее целую и дробную части,
можно записать в видеа = апР п +
ап_\Рпх + ... +
а±Р +
а0 + а_хР{ +
а_2Р 2 + ... =
=
0
<>а{ <Р, П'га 0.
Здесь
Р > 0 — основание позиционной системы счисления,
а{ — цифры числа
а в Р-ичной системе счисления.
11.2. Системы счисления
323
Для записи чисел в Р-ичных системах счисления используют десятичные цифры
(О... 9), которые дополняются буквами латинского алфавита.
В табл. 11.5 приведен пример того, как будет выглядеть число 25, записанное в разных Р-ичных системах счисления.
Таблица 11.5. Число 25, записанное в разных Р-ичных системах счисления
Система счисления
Основание
Размерность
алфавита
Алфавит
Пример
Десятичная
10 10 0,1, 2 ,3 ,4 , 5,
6, 7 ,8 ,9 25 = 2 х 101 + 5 х 10°
Двоичная
2 2
0,1 11001 = 1
х
24 + 1
х
23 +
+ 0 х 22 + 0 х 21 + 1 х 2°
Троичная
3 3
0, 1,2 221 = 2 х 32 + 2 х 3 1 + 1 х 3°
Восьмеричная
8 8
0, 1 ,2 ,3 ,4 ,5 ,
6,7 31 = 3 х 8 1 + 1 х 8°
Шестнадцатеричная
16 16 0,1, 2 ,3 ,4 , 5,
6, 7, 8, 9, А, В,
С, D, Е, F
19 = 1 х 161 + 9 х 16°
Для записи отрицательных чисел в Р-ичных системах счисления используют знак «минус», помещенный перед числом. При записи вещественных чисел для отделения дробной части числа от целой ставится запятая. Таким образом на за
пись Р-ичных чисел распространяются привычные нам по десятичной системе счисления правила, например: -2 ,2 10, -F ,0 E 16, -101,0012.
11.2.2. Перевод из одной Р-ичной системы счисления в другую
Перевод Р-ичного целого в десятичное число
Алгоритм перевода:
1. Каждая цифра Р-ичного числа переводится в десятичную систему.
2. Полученные числа нумеруются справа налево, нумерация начинается с нуля.
3. Десятичное число, соответствующее каждой Р-ичной цифре, умножается на
Рк, где основание Р записывается в десятичной системе; к — номер этого числа, полученный на шаге 2. Результаты складываются, все арифметические действия производятся в десятичной системе.
Пример
. Перевод числа
11100112
из двоичной в десятичную систему счисления.
1. Каждая цифра числа уже находится в десятичной системе.
2. Пронумеруем каждую цифру справа налево, при этом номера цифр будем
указывать в квадратных скобах справа от цифры:
1 [6], 1[5], 1[4], 0[3], 0[2], 1[1], 1 [0].
3. Результат будет выглядеть как сумма (Р = 2):
324
Глава 11. Представление данных в компьютере
Я = 26х 1 + 2 5х 1 + 14х1 + 13х 0 + 1 2х 0 + 1 1х1 + 1°х1 =
= 6 4 + 3 2 + 16 + 0 + 0 + 1 + 1 = 11410.
Пример. Перевод числа EF09i6 из шестнадцатеричной в десятичную систему
счисления.
1. Каждую цифру числа переведем в десятичную систему:
Ei6= 1410, F16= 15ю, 0,6 = 0ю, 9i6= 9,0.
2. Пронумеруем каждую цифру числа справа налево:
14[3], 15[2], 0[1], 9[0].
3. Результат (Р = 16):
я=163х 14,о+ 162х 1510+ 16'х 0,о+ 16°х 9,о =
= 4096 х 14 + 256х 15 + 0 + 9 = 61193,0.
Перевод Р-ичного смешанного числа в десятичное число
Алгоритм перевода:
1. Отдельно переводится целая часть числа (как описано ранее).
2. Каждая цифра дробной части Р-ичного числа переводится в десятичную систему.
3. Полученные числа нумеруются слева направо, нумерация начинается с единицы.
4. Десятичное число, соответствующее каждой Р-ичной цифре, умножается на
Рк, где k — номер, присвоенный числу; основание Р записывается в десятичной системе. Результаты складываются, все действия производятся в десятичной системе.
Пример. Перевод смешанного числа 11,11012 из двоичной в десятичную систему
счисления.
1. Переведем в десятичную систему целую часть: 112 = 3,0.
2. В двоичной системе каждая цифра соответствует десятичной.
3. В дробной части пронумеруем цифры слева направо:
1[1],1[2],0[3],1[4].
4. Дробная часть (р = 2):
2-1 х 1 + 2_2х 1 +2"3х 0 + 2"4х 1 =0,8125.
Все число в десятичной системе счисления будет записано как 3,8125,0.
Пример. Перевод смешанного числа B,1CD16 из шестнадцатеричной в десятичную
систему.
1. Переведем в десятичйую систему целую часть:
В,6 = 11ю-
2. Переведем каждую цифру дробной части в десятичную систему:
11.2. Системы счисления
325
116 = 1ю> Ci6= 12ю, D 16= 1310.
3. В дробной части пронумеруем цифры слева направо:
1[1], 12[2], 13[3].
4. Дробная часть (Р = 16):
1 6 1 х 1 + 1 6 2х 12 + 16"3х 13 = 0,0625 + 0,046875 + 0,003173828125 =
= 0,112548828125,0.
Все число в десятичной системе счисления будет записано как
11,112548828125.
Перевод десятичного целого числа в Р-ичную систему
Алгоритм перевода:
1. Делим исходное число нацело на основание Р в десятичной системе счисления и записываем целую часть результата деления в качестве нового значения деся
тичного числа.
2. Остаток от деления заменяем соответствующей цифрой в Р-ичной системе счисления и приписываем ее слева к полученным ранее цифрам Р-ичной записи числа (первая полученная цифра соответствует младшему разряду).
3. Выполняем шаги 1 и 2 до тех пор, пока не получим в результате 0.
Пример. Перевод числа 1710 в двоичную систему.
17 : 2 = 8 (остаток 1).
8 :2 = 4 (остаток 0).
4 :2 = 2 (остаток 0).
2 :2 = 1 (остаток 0).
1 :2 = 0 (остаток 1).
Берем остатки от деления, указанные в скобках, начиная снизу, и, продвигаясь
вверх, записываем их слева направо. Это и есть искомый результат, число 17 за
писанное в двоичной системе счисления:
17,о= Ю0012.
Пример. Перевод десятичного числа 347710 в шестнадцатеричную систему счис
ления.
3477 :16 = 217 (остаток 5,0= 5,6).
2 1 7 : 1 6 = 1 3 (остаток 9,0= 9,6).
13:16 = 0 (остаток 13,0= D 16).
Результат 3477,0= D95,6.
Правильность результата можно проверить, выполнив обратное преобразование.
326
Глава 11. Представление данных в компьютере
Перевод десятичной дроби в Р-ичную систему
Перевод дробной части десятичного числа в Р-ичную систему производится отдельно от целой части.
Алгоритм перевода:
1. Исходное число умножается на основание системы счисления Р. В полученном произведении целая часть является первой цифрой после запятой в результате.
2. Если после этой операции дробная часть числа не стала равной нулю, умножаем ее на Р и целую часть получившегося числа (переведя ее в соответствующую
Р-ичную систему) приписываем справа к результату.
3. Выполняем шаг 2 до тех пор, пока дробная часть не станет равной нулю или пока не выделится период (повторяющаяся часть в результате).
Пример. Перевод числа 0,125ю в двоичную систему.
0,125 х 2 = 0,250 (целая часть = 0).
0,25 х 2 = 0,5 (целая часть = 0).
0,5 х 2 = 1,0 (целая часть =1).
Поскольку в атом месте дробная часть стала равной нулю, преобразование окон
чено. Результат 0,12510= 0,0012.
Пример. Перевод числа 0,27510 в шестнадцатеричную систему счисления.
0,275 х 16 = 4,4 (целая часть = 4).
0,4 х 16 = 6,4 (целая часть = 6).
0,4 х 16=6,4 (целая часть = 6).
Перевод закончился с выделением периода 0,27510= 0,4(6) 16.
11.2.3. Выполнение арифметических операций
Сложение
Если результат сложения двух цифр в Р-ичной системе счисления больше Р - 1
(то есть полученное число двузначное), то старшая цифра результата всегда равна 1.
Таким образом, при сложении столбиком в следующий разряд может переходить только единица, а результат сложения в любом разряде будет меньше, чем Р. Ре
зультат сложения двух положительных Р-ичных чисел либо имеет столько же зна
чащих цифр, что и максимальное из двух слагаемых, либо на одну цифру больше, но этой цифрой может быть только единица. Такая закономерность обуславливает возможность сложения в столбик не только десятичных, но и любых Р-ичных чисел.
Поскольку сложение в десятичной системе для нас является привычным (как и другие арифметические действия), оно не вызывает затруднений. В других
Р-ичных системах для облегчения сложения (вычитания) применяются специаль
ные таблицы, сходные с привычной нам таблицей умножения (табл. 11.6).
Пример. Сложение двух двоичных чисел: 110,1122м10,0122.
11.2. Системы счисления
327
+
110
,
112 10
,012 1001
,002
Таблица 11.6. Таблицы сложения в двоичной и троичной системах счисления
0 1
0 0
1 1
1 10 0
1
C
N
0 0
1 2
1 1
C
N
1 0 2
C
N
1 0 1 1
Вычитание
Алгоритм:
Если необходимо вычесть из цифры
а цифру
b и
а г>
Ь, то в столбце
b таблицы сложения ищем значение числа
а. Самая левая цифра в строке, в которой найдено значение числа
а, и будет результатом вычитания. Если ж
е а < Ь , нам нужно заим
ствовать
единицу из левого разряда, поэтому в столбце
b мы ищем число
1а, и левая цифра в соответствующей строке будет результатом вычитания.
Пример. Вычтем из двоичного числа