d9e5a92d

Регистрация звука как непрерывного сигнала

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

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

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


Рис. 15 Регистрация звука как непрерывного сигнала
Можно поступить следующим образом: измерять амплитуду сигнала через равные промежутки времени и записывать полученные числовые значения в память компьютера (рис. 16).
Устройство, выполняющее процесс дискретизации и оцифровки аналоговых сигналов, называется аналого-цифровым преобразователем (АЦП).




Рис. 16 Схема дискретизации непрерывного сигнала
Как видно из рисунка, результат измерений не является точным аналогом непрерывного электрического сигнала. Насколько все же соответствует цифровойзвук аналоговому?

Очевидно, что это соответствие будет тем полнее, чем чаще происходят измерения и чем они точнее. Частота, с которой производятся измерения, называется частотой дискретизации. Когда мы говорим, что частота
дискретизации 44,1 кГц, то это значит, что сигнал измеряется 44100 раз в течении секунды.
А точность измерений амплитуды определяется числом бит, использующихся для представления результата измерений. Этот параметр называют разрядностью или уровнем квантования.
Чем выше частота дискретизации и уровень квантования, тем точнее будет представлен и затем воспроизведен звук. Однако, пропорционально увеличению частоты возрастают:
а) интенсивность потока цифровых данных, а пропускные возможности интерфейсов не безграничны, особенно если записывается/воспроизводится одновременно несколько каналов;
б) вычислительная нагрузка на процессоры, а их возможности также ограничены;
в) объем памяти, необходимой для хранения сигнала в цифровой форме.
Поэтому, в зависимости от характера звука и требований, предъявляемых к его качеству и объему занимаемой памяти, выбирают некоторые компромиссные значения.
Например, при записи музыки на компакт-диски используются 16-битное кодирование при частоте дискретизации 44,032 кГц, при работе же с речью достаточно 8-битного кодирования при частоте 8 кГц.
Считается, что диапазон частот, которые слышит человек, составляет от 20 Гц до 20000 кГц. Согласно теореме Найквиста-Котельникова, для того, чтобы аналоговый (непрерывный по времени) сигнал можно было точно восстановить по его отсчетам, частота дискретизации должна быть как минимум вдвое больше максимальной звуковой частоты. Таким образом, если реальный аналоговый сигнал, который мы собираемся преобразовать в цифровую форму, содержит частотные компоненты от 0 Гц до
20 кГц, то частота дискретизации такого сигнала должна быть не меньше, чем 40 кГц. Сегодня самыми распространенными частотами дискретизации являются 44,1 кГц и 48 кГц.

В последнее время выяснено, что обертоны, расположенные свыше 20 кГц, вносят немалый вклад в звучание.

Поэтому появляются преобразователи, использующие частоты дискретизации 96 кГц и 192 кГц, а в недалеком будущем ожидается появление систем и с частотой 384 кГц.
Для записи и хранения звукового сигнала в цифровой форме требуется большой объем дискового пространства. Чем выше требования к качеству записываемого звука, тем больше должна быть емкость носителя.
Например, стереофонический звуковой сигнал длительностью 60 с, оцифрованный с частотой дискретизации 44,1 кГц, при 16-разрядном квантовании для хранения потребует на около 10 Мб: 2
(стереофонический) х 60 (с) х 44100 (ед/с) х 2 (байта) = 10 584 000 байт = 10 336 Кб = = 10,094 Мб.
Существенно снизить объем цифровых данных, необходимых для представления звукового сигнала с заданным качеством, можно с помощью компрессии, т.е. путем уменьшения количества отсчетов и уровней квантования. Главная задача методов компрессии - достижение максимального сжатия звукового сигнала при минимальных субъективно слышимых искажениях восстановленного сигнала.

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

Правила выполнения этих операций в математике подробно разработаны для чисел, представленных в позиционной системе счисления. Многовековая история развития математики показывает, что именно позиционный принцип позволяет использовать эти правила как универсальные алгоритмы, справедливые для системы счисления с любым основанием: 2, 3, 8, 10, 16, 60 и пр.
Система счисления - совокупность приемов обозначения чисел, способ записи чисел.
Система счисления называется позиционной, если значение (вес) цифры в числе зависит не только от значения самой цифры, но и от ее позиции в записи числа.
Так, в числе 575,5 последняя цифра 5 передает (весит) половинку единицы, предпоследняя цифра 5 передает пять единичек, а первая цифра 5 передает уже пятьсот единиц. Это число можно записать так:
575 = 5-102 + 7-101 + 5-10 + 5-10-1.
Основание системы счисления - это:
- число различных цифр, используемых для записи чисел;
- количество единиц младшего разряда, соответствующих одной единице следующего старшего разряда.
Наиболее привычная для нас система счисления - десятичная. Для записи чисел в ней используется 10 разных цифр; единице любого разряда соответствует 10 единиц предыдущего разряда.
В двоичной системе счисления для записи чисел используется всего две цифры - 0 и 1, а единице любого разряда соответствует две единицы предыдущего разряда.
В шестнадцатеричной системе счисления используется 16 цифр: первые десять привычные арабские цифры, а для обозначения оставшихся шести цифр используются первые шесть прописных букв латинского алфавита (A, B, C, D, E, F).
В шестидесятеричной системе счисления, так хорошо знакомой нам по нашим часам при исчислении секунд и минут, в настоящее время для записи чисел используется десять цифр, привычных нам по десятичной системе, но вес единицы каждого разряда составляет 60 единиц разряда предыдущего.
Заметим, что обычно основание системы счисления указывается как нижний индекс, например, 123,510 1101,1012 120,78 9А07,С816.
В позиционных системах счисления каждое число может быть записано в цифровой и многочленной форме.
Пусть запись числа в цифровой форме состоит из цифр а„ аи-1 а„-2 ... а2 а1 а0 , а-1 а-2...
Если это число представлено в позиционной системе счисления с основанием р, то многочленная форма представления числа имеет следующий вид:
-p 2 +...+ а^р2 + аір1 + а0р + а_1р'1 + а-2р + .апрп + а„_і pn + ап
Перевести число из р-ричной в десятичную систему счисления можно, записав его в многочленной форме и вычислив значение полученного многочлена.
ПРИМЕРЫ
123,5іо = 1* 102 + 2* 101 + 3* 100 + 5* 10-1.
1101,1012 = 1* 23 + 1*22 + 0* 21 + 1* 20 + 1* 2-1 + 0* 2-2 + 1* 2-3.
120,78 = 1* 82 + 2* 81 + 0* 80 + 7* 8-1.
9А07,С816 = 9* 163 + 10* 162 + 0* 161 + 7* 160 + 12* 16-1 + 8 * 16-2.
Произведя соответствующие вычисления, Вы получите:
1101,1012 = 8+4+0+1+0,5+0,25+0,125 = 13,875ш.
120,78 = 64+16+0+0,875 = 80,875ш.
9А07,С816 = 36864+2560+0+7+0,75+0,03125 = 39431,78125x0-
Осуществить перевод из десятичной системы счисления в любую другую позиционную систему можно также, используя позиционный принцип. Полезным в этом случае будет такое понятие, как базис системы счисления, т.е. последовательность так называемых ключевых чисел, каждое из которых задает значение цифры по ее месту в записи числа.
ПРИМЕРЫ
Базис десятичной системы счисления: ..., 10n, ..., 1000, 100, 10, 1, 0.1, 0.01, ... .
Базис двоичной системы счисления: ..., 2n, ..., 16, 8, 4, 2, 1, 1/2, 1/4, ... .
Базис троичной системы счисления: ..., 3n, ..., 81, 27, 9, 3, 1, 1/3, 1/9, ... .
Базис шестнадцатеричной системы счисления: ..., 16n, ..., 256, 16, 1, 1/16, 1/256, ... .
Перевести число из десятичной в p-ричную систему счисления - значит разложить это число по соответствующему базису, а именно, определить, какие элементы базиса (начиная с максимально возможного) и сколько раз входят в переводимое количество.
ПРИМЕР
Перевод числа 2610 в двоичную систему счисления:
максимальный элемент базиса, меньший 26 - это 16 - входит 1 раз (остаток 26 - 16 = 10 единиц);
элемент 8 входит в остаток 1 раз (остаток 10 - 8 = 2 единицы);
элемент 4 входит в остаток 0 раз (остаток 2 - 0 = 2 единицы);
элемент 2 входит в остаток 1 раз (остаток 2 - 2 = 0 единиц);
элемент 1 входит в остаток 0 раз.
Таким образом, 2610 = 110102 .
Схематично это можно представить так:
1 1 0 1 0
7 G 5 4 3 2 1 0 - номер разряда
27 2.6 26 24 23 22 21 2 Чвес„а
128 64 32 16 8 А 2 1 / базисный элемент
Перевод числа 2610 в шестнадцатеричную систему счисления:
максимальный элемент базиса, меньший 26 - это 16 - входит 1 раз (остаток 26 - 16 = 10 единиц); элемент 1 входит в остаток 10 раз (обозначается цифрой А) (остаток 10 - 10 = 0 единиц);
Таким образом, 2610 = 1А16 (рис. 17).


Рис. 17
Рассмотренные способы перевода чисел из одной системы счисления в другую хорошо отражают принцип позиционности, но далеко не самые удачные для представления их в виде строго формализованного алгоритма. Известно несколько способов перевода чисел.

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

Далее приведены основные алгоритмы перевода целых и дробных чисел для различных систем счисления.

Алгоритмы для перевода целых чисел

Постановка задачи. Дано число Aq (в системе счисления с основанием q).

Заменить его равным числом Хр (в системе счисления с основанием р).
Алгоритм I. Для того, чтобы целое число Aq заменить равным ему целым числом Хр, необходимо число Aq разделить нацело по правилам q-арифметики на основание р. Остаток деления запомнить, а частное вновь нацело разделить на р. И так далее, пока частное не станет равно 0.
Цифрами искомого числа Хр являются остатки от деления, выписанные так, что последний остаток является цифрой старшего разряда числа Хр.
Алгоритм II пригоден для любых р и q, однако рекомендуется для перевода чисел из десятичной системы счисления в произвольную систему счисления.
Пример
26іо -- Х2
q = 10, p = 2
26io -- Х3
q = 10, p = 3
2610 -- Х16 q = 10, p = 16


2610 = 110102

Алгоритм II. Для того чтобы данное целое число Aq заменить равным ему числом Хр, достаточно цифру старшего разряда числа Aq умножить по правилу р-арифметики на основание q. К полученному произведению прибавить цифру следующего разряда числа Aq Полученную сумму вновь умножить на q по правилам р-арифметики, вновь к полученному произведению прибавить цифру следующего (более младшего) разряда.

И так до тех пор, пока не будет прибавлена младшая цифра числа Aq.
Алгоритм II пригоден для любых р и q, однако рекомендуется при переводе из произвольной системы счисления в десятичную.

Пример

2F516 -- Х10 (2*16+15)*16+5
= 75710
47) 757
101102 -- Х10 207g -- Х10
(((1*2+0)*2+1)*2+1)*2+0 (2*8+0)*8+7 = = 22ю 135ю
2) 5) 11) 22 16) 135
Алгоритмы для перевода правильных дробей
Постановка задачи. Дано число 0, Aq (в системе счисления с основанием q).

Заменить его равным числом 0, Хр (в системе счисления с основанием р).
Алгоритм III. Для того, чтобы исходную правильную дробь 0, Aq заменить равной ей правильной дробью 0, Хр, нужно 0, Aq умножить на новое основание р по правилам q-арифметики, целую часть полученного произведения считать цифрой старшего разряда искомой дроби.

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

Пример

Дробь 0,375і0 заменить равной ей двоичной дробью.

Решение

0,375 * 2 = 0,750
0,75 * 2 = 1,50
0,5 * 2 = 1,0 (дробная часть равна 0)
0,375ю=0,01І2
Алгоритм IV. Для того чтобы исходную правильную дробь 0, Aq заменить равной ей правильной дробью 0, Хр, необходимо цифру младшего разряда дроби 0, Aq разделить на основание q по правилам р-арифметики, к полученному частному прибавить цифру следующего (более старшего) разряда и далее поступать так же, как и с первой взятой цифрой.
Эти операции продолжать до тех пор, пока не будет прибавлена цифра старшего разряда искомой дроби. После этого полученную сумму разделить еще раз на р и к результату приписать запятую и нуль целых.
Алгоритм рекомендуется при переводе из произвольной системы счисления в десятичную.

Пример

Дробь 0,11012 заменить равной ей десятичной правильной дробью.

Решение

1 : 2 + 0 = 0,5ю
0,5 : 2 + 1 = 1,2510
1,25 : 2 + 1 = 1,625ю
1,625 : 2 + 0 = 0,812510
0,11012 = 0,8125ю.

Алгоритмы перевода чисел в системы счисления с кратными основаниями

Постановка задачи. Перевести число Aq из системы счисления с основанием q в систему счисления с основанием qn, где n - натуральное число.
Алгоритм V. Для записи двоичного числа в системе счисления с основанием q = 2" достаточно данное двоичное число разбить на группы вправо и влево от десятичной точки по п цифр в каждой группе. Затем каждую такую группу следует рассмотреть как n-разрядное двоичное число и записать его как цифру в системе с основанием q = 2".
В крайних группах, если двоичных цифр оказалось меньше n, можно добавлять незначащие нули.

Пример

Число 1011000010,001l0012 заменить равным ему числом восьмеричной системы счисления, т.е. системы с основанием q = 2 , и шестнадцатеричной системы счисления, т.е. системы счисления с основанием q = 24.

Решение

Для перевода в восьмеричную систему счисления разбиваем двоичное число на группы по три цифры в каждой:
001 011 000 010 , 001 100 100
- двоичное число 1 восьмеричное число
Внизу под каждой из групп выписаны цифры, соответствующие трехразрядным двоичным числам:
12 = 18; 0112 = 38; 0002 = 08; 0102 = 28; 0012 = Ы 1002 = 48.
Для перевода в шестнадцатеричную систему счисления разбиваем двоичное число на группы по четыре цифры в каждой:
0010 1100 0010 , 0011 0010 - двоичное число 2 С 2 , 3 2 - шестнадцатеричное число
Внизу под каждой из групп выписаны цифры, соответствующие четырехразрядным двоичным числам:
102 = 216 ; 11002 = С16 ; 00102 = 216 ; 00112 = З16 ; 00102 = 216.
Постановка задачи. Перевести число Aq из системы счисления с основанием q в систему счисления с основанием q, где n - натуральное число.
Алгоритм VI. Для замены числа, записанного в системе с основанием р = 2n, равным ему числом в двоичной системе счисления достаточно каждую цифру данного числа заменить n-разрядным двоичным числом.

Пример

Число 2607,348 заменить равным ему двоичным числом.
В соответствии с алгоритмом запишем:
2 6 0 7 ,3 4 - восьмеричное число;
010 110 000 111 ,011 100 - двоичное число.
В результате получим 2607,248 = 10110000111,01112.
Из сказанного следует, что замена двоичного числа на равное ему восьмеричное и наоборот может осуществляться механически, без всяких вычислений.
Нетрудно представить себе пишущую машинку, у которой на клавишах восьмеричные цифры: 0, 1, 2, 3, 4, 5, 6, 7 - и на молоточках, которые бьют по бумаге, соответствующие им трехразрядные двоичные числа: 000, 001, 010, 011, 100, 101, 110, 111. Такая машинка позволит всякое восьмеричное число, отстукиваемое на клавиатуре, отпечатать на бумаге в виде равного ему двоичного числа.

Замените клавиши на молоточки - и будет изготовлена двоично-восьмеричная кодирующая машинка.

Пример

Число 6В07,0416 заменить равным ему двоичным числом.
В соответствии алгоритмом запишем:
6 B 0 7 ,D 4 - шестнадцатеричное число;
В результате получим 6B07,D416 = 110101100000111,1101012

Различия в представлении целых и вещественных чисел

Целые и вещественные числа представляются в памяти компьютера по-разному.
Мало научиться записывать числа, важно облегчить процесс автоматизированного выполнения арифметических действий над числами.
Вернемся к первым ЭВМ. Основным видом их деятельности были вычисления, но объем оперативной памяти и быстродействие процессора были невелики, и инженерам приходилось придумывать разнообразные способы экономного хранения и обработки чисел, чтобы даже сложные расчеты выполнялись за разумное время.
Операции над целыми числами выполнять проще, но зато в реальной практике измерения в целых числах встречаются не так уж часто. Поэтому для целых чисел решено было отводить по одной или две ячейки памяти - один или два байта.
Один байт чаще всего отводился для всевозможных счетчиков, т.е. для представления целых положительных чисел.
Максимальным десятичным числом, которое можно было закодировать таким образом было 25510 = 111111112 = 28 - 1.
Для представления положительных и отрицательных целых чисел отводилось два байта (16 бит). Признаком, передающим знак числа, было выбрано значение самого старшего бита: 0 означает, что закодировано положительное число, 1 - отрицательное.
Максимальным десятичным числом, которое можно было закодировать таким образом было 3276710 = 01111111 111111112 = 215 - 1.
С вещественными числами дело обстоит немного сложнее, поскольку надо было придумать способ, одинаковый для кодирования и больших, и маленьких чисел, т.е. и миллион (1000000), и одну миллионную (0,000001) хотелось бы кодировать посредством одного и того же алгоритма.
В соответствии с принципом позиционности любое десятичное число можно представить как некоторую степень десяти.

Пример

1000000 = 0,1 * 107
0,000001 = 0,1 * 10-5
-123,45 = -0,123 45 * 103.
Такое представление чисел называется записью с плавающей точкой (запись 123,45 - запись с фиксированной точкой). В этой записи число имеет четыре характеристики:
- знак числа;
- знак порядка;
- порядок (степень числа 10);
- мантисса (дробная часть числа).
При двоичном кодировании необходимо все эти характеристики как-то отразить.
Было решено отводить под вещественные числа 4 байта (32 бита). Три младших байта отводилось под запись мантиссы, а старший байт включал в себя:
- один (старший) бит - знак числа: 0 - положительное, 1 - отрицательное;
- один бит - знак порядка: 0 - положительный, 1 - отрицательный;
- младшие 6 бит - порядок числа.
Если порядок числа был равен 1111112 = 6310, то, следовательно, максимальным числом, которое можно было закодировать таким образом, было 1063.

Пример

Число 123,45i0 = -0,12345 103 в памяти компьютера будет представлено так:


В настоящее время, когда быстродействие процессоров и объем оперативной памяти достаточно велики, а обычной разрядностью компьютеров становится разрядность в 32 или 64 бита, уже нет жестких требований к использованию экономных кодов для записи чисел. И сейчас имеется возможность проводить расчеты, величины в которых могут превосходить 1063 во много раз.

Элементы машинной арифметики

Все арифметические операции над двоичными числами в компьютере можно свести к двум операциям: сложению и сдвигу кодов. Это позволяет технически реализовать четыре арифметических действия в одном арифметико-логическом устройстве, используя одни и те же схемы выполнения операций.
Примеры 10110 10110 10110 10110 | 1011 + 1011 1011 1011 1011 10 100001 1011 10110 0 10110
00000
10110
1110010

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

При выполнении арифметических операций в компьютере применяются прямой, обратный и дополнительный коды: прямой - при умножении и делении; обратный - при замене вычитания сложением; дополнительный - при сложении положительных и отрицательных чисел.
Прямой код двоичного числа - это само двоичное число, причем значение знакового разряда для положительных чисел равно 0, а для отрицательных 1.
Обратный код для положительного числа совпадает с прямым кодом, а для отрицательного числа все двоичные цифры числа заменяются на противоположные (инверсные) значения (единица на ноль и обратно). Знак числа остается прежним.
Дополнительный код положительного числа совпадает с прямым кодом. Дополнительный код отрицательного числа образуется как результат суммирования обратного кода с единицей младшего разряда.



Содержание раздела