Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

ВВЕДЕНИЕ 2 страница. Таблица 1.3. Двоичное представление знаковых и беззнаковых чисел Беззнаковое Знаковое Двоичное +7 +6 +5



Таблица 1.3. Двоичное представление знаковых и беззнаковых чисел

Беззнаковое Знаковое Двоичное
  +7  
  +6  
  +5  
  +4  
  +3  
  +2  
  +1  
     
  -1  
  -2  
  -3  
  -4  
  -5  
  -6  
  -7  
  -8  

Подавляющее большинство современных процессоров использует двоично-дополнительное представление для целых чисел. В те времена, когда компьютеры были большими, встречались системы, применявшие для этой цели дополнительный, знаковый бит: число —1 представлялось так же, как +1, но с установленным знаковым битом. Такие процессоры должны были иметь отдельные команды для беззнаковых и знаковых арифметических операций и более сложное АЛУ. Кроме того, при таком представлении возникает специфическая проблема "отрицательного нуля".
Иногда наравне с двоичным используется и специфическое, так называемое двоично-десятичное представление чисел (рис. 1.2). Это представление особенно удобно для приложений, которые постоянно вынуждены использовать десятичный ввод и вывод (микрокалькуляторы, часы, телефоны с автоопределителем номера и т. д.) и имеют небольшой объем программной памяти, в который нецелесообразно помещать универсальную процедуру преобразования чисел из двоичного представления в десятичное и обратно.
В таком представлении десятичная цифра обозначается тетрадой, четырьмя битами. Цифры от 0 до 9 представляются 0, 1111 недопустимы.своими двоичными эквивалентами, а комбинации битов 1010, 1011, 1100, 1101, 111

Рис. 1.2. Двоично-десятичное представление чисел

Вместо арифметических операций над такими числами большинство современных микропроцессоров предлагают использовать для их сложения и вычитания обычные бинарные операции, а потом исправлять возникающие при этом недопустимые значения при помощи специальной команды двоично-десятичной коррекции. Алгоритм работы этой команды читателю предлагается разработать самостоятельно. Для него потребуется информация о том, происходил ли при сложении двоичный перенос из младшей тетрады. Процессоры, предоставляющие такую команду, имеют и бит межтетрадного переноса.
Если операция производится над числами, имеющими 16 или более двоичных разрядов (4 и более двоично-десятичных), для коррекции нам недостаточно одного межтетрадного переноса — надо иметь по биту переноса на каждую из пар последовательных тетрад. Так далеко ни один из существующих процессоров не заходит. Например, 32-разрядные процессоры х86 имеют команды двоично-десятичной коррекции только для операций над числами с 8-ю двоичными (двумя двоично-десятичными) разрядами.

Представление рациональных чисел

  — Чему равна лошадиная сила? — Это сила лошади весом один килограмм и ростом один метр —Да где же вы видели такую лошадь? — А ее вообще мало кто видел. Она хранится под аргоновый колпаком в Палате мер и весов под Парижем.

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

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

Два основных представления рациональных чисел, используемых в компьютерах, — это представления с фиксированной и плавающей точкой. Интерпретирующие системы (например, MathCAD) иногда реализуют и собственно рациональные числа, представляемые в виде целых числителя и знаменателя, но процессоры, умеющие работать с такими числами на уровне системы команд, автору неизвестны.
Представление с фиксированной точкой (рис. 1.3) концептуально самое простое: мы берем обычное двоичное число и объявляем, что определенное количество его младших разрядов представляет собой дробную часть в позиционной записи. Сложение и вычитание таких.чисел может выполняться при помощи обычных целочисленных команд, а вот после умножения и перед делением нам надо, так или иначе, передвинуть двоичную запятую на место.

Рис. 1.3. Число с двоичной фиксированной точкой

Примечание
В русском языке принято называть разделитель целой и дробной частей позиционной дроби запятой, а в английском — точкой. Современная вычислительная терминология формировалась на английском языке, и английские словосочетания fixed-point и floating-point часто переводились на русский язык буквально, поэтому словосочетания "фиксированная точка" и "плавающая точка" прочно вошли в русскую компьютерную лексику, и мы будем использовать именно их.

Современные процессоры обычно не предоставляют арифметических операций с фиксированной точкой, однако никто не запрещает программисту или разработчику компилятора реализовать такие операции на основе стандартных целочисленных операций и команд битового сдвига.
Если нам необходима точность вычислений, определенная количеством десятичных знаков (например, при подсчете рублей с точностью до копеек), нужно помнить, что большинство десятичных дробей в позиционной двоичной записи представляют собой периодические (с бесконечным числом знаков) дроби. Для обеспечения требуемой точности нам следует либо иметь дополнительные двоичные позиции, либо вместо фиксированной двоичной использовать фиксированную десятичную точку: складывать такие числа по-прежнему можно с помощью целочисленных операций, но коррекцию умножения и деления необходимо выполнять с помощью умножения (деления) на степень десяти, а не на степень двойки.
В научных и инженерных вычислениях и цифровой обработке сигналов шире применяются числа с плавающей двоичной точкой. Дело в том, что исходные данные для таких вычислений обычно являются результатами измерений физических величин. Все физически реализуемые способы измерений сопровождаются ошибками: для объяснения этого печального факта часто ссылаются на принцип неопределенности Гейзенберга [Карнап 1971], но при практических измерениях гораздо большую роль играют следующие виды ошибок.

  1. 1. Тепловые шумы — температурные колебания измеряемого объекта и измерительного инструмента.
  2. 2. Инструментальные погрешности, обусловленные различными ошибками при изготовлении или калибровке инструмента или изменением его параметров с момента последней калибровки, например, за счет механического износа.
  3. 3. Методологические ошибки, обусловленные не только неумением пользоваться
  4. инструментом, но и тем фактом, что наши инструменты не имеют непосредственного контакта с явлением, которое мы хотим измерить: например, измеряя динамику валового внутреннего продукта, мы, в действительности, измеряем также и эффекты, обусловленные динамикой денежной массы. Возможна и обратная ситуация, когда наш инструмент имеет слишком тесный контакт с измеряемым объектом и искажает его поведение. Из школьного курса физики известны такие источники методологических ошибок, как падение напряжения на вольтметре или внутреннее сопротивление амперметра.

Если с принципом Гейзенберга бороться невозможно, то тепловые и инструментальные ошибки можно уменьшать, первые — снижением температу-Pbi, а вторые — большей тщательностью изготовления и калибровки, ужесточением условий эксплуатации и хранения или совершенствованием самого инструмента (например, интерферометрический лазерный дальномер при равной тщательности изготовления будет намного точнее рулетки).
Однако ни абсолютный нуль температуры, ни абсолютная точность изготовления физически недостижимы, и даже приближение к ним в большинстве ситуаций недопустимо дорого.
Сомневающемуся в этом утверждении читателю предлагается представить, во что бы превратилась его жизнь, если бы при взвешивании продуктов в магазине сами продукты и весы охлаждались хотя бы до температуры жидкого азота, а плотницкий метр надо было бы хранить с теми же предосторожностями, что и метрологический эталон.
Поэтому на практике целесообразно смириться с погрешностями измерений, а на приборе указать точность, которую его изготовитель реально может гарантировать при соблюдении пользователем условий хранения и эксплуатации. Полному искоренению подлежат только методологические ошибки, да и с ними во многих ситуациях приходится смириться из-за неприемлемо высокой стоимости прямых измерений.
Относительно дешевый способ повышения точности — многократные измерения и усреднение результата, но этот метод повышает стоимость измерений и, если измерения производятся одним и тем же инструментом, не позволяет устранить инструментальные и методологические ошибки.
И тепловые шумы, и инструменты порождают ошибки, которые при прочих равных условиях пропорциональны измеряемой величине. Десяти метровая рулетка имеет инструментальную ошибку, измеряемую миллиметрами, а десятисантиметровый штангенциркуль — микронами. Поэтому ошибку измерений часто указывают не в абсолютных единицах, а в процентах.
При записи результатов измерений хорошим тоном считается указывать точность этих измерений и не выписывать десятичные цифры (или знаки после запятой), значения которых лежат внутри границ ошибки. Цифры перед десятичной запятой в этом случае заменяются нулями, а после нее -просто отбрасываются. Для сокращения записи больших значений, измеренных с относительно небольшой точностью, в научной и инженерной литературе используется экспоненциальная запись чисел: незначащие (в данном случае — лежащие внутри границ ошибки) младшие десятичные цифры отбрасываются, и после числа добавляется 10N, где N — количество отброшенных цифр. Обычно рекомендуют нормализовать такую запись, перемещая десятичную запятую на место после старшей цифры (смещение запятой на одну позицию влево соответствует увеличению показателя степени множителя на единицу). В соответствии с этими правилами величина 2128506 ± 20 преобразуется к виду 2,12850х106 (обратите внимание, что младший ноль в данном случае является значащим).
При бытовых измерениях обычно обходятся двумя-тремя значащими десятичными цифрами. В научных и инженерных измерениях используются и большие точности, но на практике измерения с точностью выше шестого десятичного знака встречаются разве что при разработке и калибровке метрологических эталонов. Для сравнения, цифровая телефония обходится 8-ю битами, а аналого-цифровой преобразователь бытовой звуковой карты имеет 12, реже 14 значащих двоичных разрядов. Большинство современных карт считаются 16-битными, но на практике младшие разряды их АЦП оцифровывают только тепловой шум усилителя и собственных старших разрядов, а также ошибки калибровки того и другого. Честные (т. е. такие, у которых все разряды значащие) 16-разрядные АЦП используются в профессиональной звукозаписывающей и измерительной аппаратуре, 24-разрядные АЦП относятся к прецизионной аппаратуре, а 32-разрядные на практике не применяют.
Вычислительные системы широко используют представления чисел с плавающей точкой, только не десятичной, а двоичной (рис. 1.4). Идея этого представления состоит в том, чтобы нормализовать позиционную двоичную дробь, избавившись от незначащих старших нулевых битов и освободив место для [возможно] значащих младших разрядов. Сдвиг, который нужен для нормализации, записывается в битовое поле, называемое порядком. Само же число называется мантиссой.

Рис. 1.4. Число с плавающей двоичной точкой

Число с плавающей точкой, таким образом, состоит из двух битовых полей — мантиссы М и порядка Е. Число, представленное двумя такими полями, равно Мх2Е. Нормализация состоит в отбрасывании всех старших нулей, поэтому старший бит нормализованной двоичной мантиссы всегда равен 1. Большинство современных реализаций чисел с плавающей точкой используют этот факт для того, чтобы объявить незначащими не только старшие нули, но и эту единицу, и, таким образом, выигрывают дополнительный бит точности мантиссы.
Сложение двух чисел с плавающей точкой состоит в денормализации мантисс (совмещении двоичных точек), их сложении и нормализации результата. Перемножение таких чисел, соответственно, выполняется перемножением мантисс, сложением порядков и опять-таки нормализацией результата.
В некоторых старых архитектурах, например БЭСМ-6, все арифметические операции выполнялись над числами с плавающей точкой, однако существовала возможность выключить нормализацию мантиссы. Ненормализованные числа с плавающей точкой использовались для представления значений с фиксированной точкой, в том числе и целочисленных.
Стандарт языка ANSI С требует наличия 32-битового (8-разрядный порядок и 24-разрядная мантисса) и 64-битового (16-разрядный порядок и 48-разрядная мантисса) представлений чисел с плавающей точкой, которые называются, соответственно, числами одинарной и двойной точности (float и double float или просто double). Числа двойной точности, конечно же, не могут быть результатом прямых измерений физических величин, но позволяют избежать накопления ошибок округления при вычислениях.
Большинство современных процессоров общего назначения и ориентированных на приложения цифровой обработки сигналов (ЦОС) предоставляет операции над такими числами, а зачастую и над числами большей разрядности. Операции практически всегда включают сложение, вычитание, умножение и деление. Часто на уровне системы команд реализуются и элементарные функции: экспонента, логарифм, квадратный корень, синус, косинус и т. д. Процессоры ЦОС нередко предоставляют и отдельные шаги дискретного преобразования Фурье.
Количество операций с плавающей точкой в секунду (Floating Operations Per Second, FLOPS, в наше время чаше говорят о Mflops — миллионах операций в секунду), которые может исполнять процессор, является одной из важных его характеристик, хотя и не для всех приложений эта характеристика критична.

Представление текстовых данных

  Вы можете прочитать третью снизу строку таблицы? — Н, К, И, М... Доктор, у вас криво настроена кодировка!

Все используемые способы представления текстовых данных, так или иначе, сводятся к нумерации символов алфавита (или множества символов системы письменности интересующего нас языка, которое используется вместо алфавита — слоговой азбуки, иероглифов и т. д.) и хранения полученных целых чисел наравне с обычными числами. Способ нумерации называется кодировкой, а числа — кодами символов.
Для большинства кодировок языков, использующих алфавитную письменность (латиница, кириллица, арабский алфавит, еврейский и греческий языки) достаточно 127 символов. Самая распространенная система кодирования латиницы — ASCII — использует 7 бит на символ. Другие алфавиты обычно кодируются более сложным образом: символы алфавита получают коды в диапазоне от 128 до 255, а коды от 0 до 127 соответствуют кодам ASCII. Таким образом, любой символ этих алфавитов, в том числе и в многоязычных текстах, использующих сочетание национального алфавита и латиницы, может быть представлен 8-ю битами или одним байтом. Но для японских слоговых азбук, а тем более для китайской иероглифики, 255 кодов явно
недостаточно, и приходится использовать многобайтовые кодировки. Распространенное обозначение таких кодировок — DBCS (Double Byte Character Set — набор символов, кодируемый двумя байтами).
Двух байтов, в принципе, достаточно, чтобы сформировать единую кодировку для всех современных алфавитов и основных подмножеств иерогли-фнки. Попытка стандартизовать такое представление — Unicode — пока что не имеет полного успеха. Отчасти это можно объяснить тем, что потребность в представлении разноязыких текстов в пределах одного документа ограничена, кроме того, слишком много старого программного обеспечения использует предположение о том, что символ занимает не более байта. Такие программы не могут быть легко преобразованы для работы с Unicode.
Используются две основные кодировки латиницы -- ASCII и EBCDIC (Extended Binary Coded Decimal Information Code), применяемая системами AS/400, System/370, System/390 и z90 фирмы IBM. Для представления русского варианта кириллицы существует три основных кодировки: альтернативная (известная также как ср866), ср!251 и KOI-8 и ряд менее широко используемых (ISO 8892-5 и др.).
Арифметические операции над такими "числами" обычно бессмысленны, зато большой смысл имеют операции сравнения. Операции сравнения в современных процессорах реализованы как неразрушающее вычитание — мы производим те же действия, что и при обычном двоичном вычитании, но запоминаем не сам результат, а лишь флаги знака, переноса и равенства результата нулю. На основании значений этих флагов определяем результат сравнения: если разность равна нулю, сравниваемые символы одинаковы, если она положительна или отрицательна, один из символов больше или меньше другого.
Естественно, чаще всего мы хотим интерпретировать результаты посимвольного сравнения как лексикографическое (алфавитное) "больше" или "меньше" (для русского алфавита, "а" меньше, чем "б"). Проще всего это делать, если нумерация символов совпадает с их порядком в алфавите, но далеко не для всех распространенных кодировок это справедливо.
В кодировке ASCII (American Standard Code for Information Interchange — Американский стандартный код обмена информацией), например, все символы латиницы, цифры и большинство распространенных знаков препинания обозначаются кодами от 0 до 127, при этом коды букв расставлены в соответствии с латинским алфавитом. В США, как и в других англоязычных странах, латинский алфавит используется в неизмененном виде, а для передачи звуков, отсутствовавших в оригинальном латинском языке, применяется причудливая орфография. Большинство других европейских алфавитов обходит проблему несоответствия фонетик путем расширения набора символов латиницы — например, в немецком языке добавлены буквы ö, ä, ü и ß. Другие языки имеют множество различных "акцентов" и "диакритических символов", расставляемых над буквами для указания особенностей произношения. Некоторые языки, например французский, используют одновременно и расширения алфавита, и причудливую орфографию. Нередко встречаются и дополнительные знаки препинания, например, ¿ и ¡ в испанском языке.
Все символы-расширения в каждом из национальных алфавитов находятся на определенных местах, но при использовании кодировки ASCII для представления этих символов сохранить этот порядок невозможно — соответствующие коды уже заняты. Так, в кодировке ISO 8895-1 все символы латиницы кодируются в соответствии с ASCII, а коды расширений более или менее произвольно раскиданы между 128 и 255. Более яркий пример той же проблемы — кодировки кириллицы семейства KOI, в которых символы кириллицы сопоставлены фонетически соответствующим им символам латиницы (филе нот фоунд, или, наоборот, esli wy не movete pro^itatx eto po-russki, smenite kodirovku). Естественно, совместить такое сопоставление и алфавитную сортировку невозможно.
Стандартным решением в таких случаях является использование для сравнения и лексикографической сортировки промежуточных таблиц, в которых для каждого допустимого кода указан его номер в лексикографическом порядке. На уровне системы команд процессоры этого обычно не делают, но на уровне библиотек языков высокого уровня это осуществляется очень часто.
При обмене данными между системами, использующими разные кодировки, необходимо учитывать этот факт. Стандартный способ такого учета, применяемый во многих кросс-платформенных форматах документов (HTML, MIME) — это сообщение где-то в теле документа (обычно в его начале) или в передаваемой вместе с документом метаинформации об используемых языке и кодировке. Большинство средств просмотра почты и документов HTML умеют интерпретировать эту метаинформацию, поэтому конечный пользователь все реже и реже сталкивается с необходимостью самостоятельно разбираться в различных кодировках.
Проблемы возникают, когда метаинформация не указана или, что еще хуже, указана неправильно. Последнее особенно часто встречается при неправильной настройке почтового клиента у отправителя. Для борьбы с такими сообщениями разработаны даже специальные программы, применяющие частотный анализ текста для определения реально использованной кодировки.
Два основных подхода к представлению форматированного текста — это языки разметки и сложные структуры данных, используемые в текстовых процессорах. Примерами языков разметки являются HTML, LATEX, troff. В этих языках обычный текст снабжается командами, указывающими на то, каким шрифтом следует отображать конкретный фрагмент текста и как его следует форматировать (например, какова ширина параграфа, следует ли делать переносы в словах, надо ли выравнивать текст по левому или правому краю). Команды представляют собой специальные последовательности символов той же кодировки, в которой набран и основной текст.
Отформатированные таким образом тексты могут генерироваться как вручную (например, LATEX ориентирован именно на ручной набор текста), так и различными автоматизированными средствами.

Представление изображений

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

Рис. 1.5. Двухмерное векторное изображение

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

Рис. 1.6. Трехмерное векторное изображение

Двухмерные векторные форматы очень хороши для-представления чертежей, диаграмм, шрифтов (или, если угодно, отдельных букв шрифта) и отформатированных текстов. Такие изображения удобно редактировать — изображения и их отдельные элементы легко поддаются масштабированию и другим преобразованиям. Примеры двухмерных векторных форматов — PostScript, PDF (Portable Document Format, специализированное подмножество PostScript), WMF (Windows MetaFile), PCL (Printer Control Language, система команд принтеров, поддерживаемая большинством современных лазерных и струйных печатающих устройств). Примером векторного представления движущихся изображений является MacroMedia Flash. Трехмерные векторные форматы широко используются в системах автоматизированного проектирования и для генерации фотореалистичных изображений методами трассировки лучей и т. д.
Однако преобразование реальной сцены (например, полученной оцифровкой видеоизображения или сканированием фотографии) в векторный формат представляет собой сложную и, в общем случае, неразрешимую задачу. Программы-векторизаторы существуют, но потребляют очень много ресурсов, а качество изображения во многих случаях получается низким. Самое же главное — создание фотореалистичных (фотографических или имитирующих фотографию) изображений в векторном формате, хотя теоретически и, возможно, на практике требует большого числа очень сложных примитивов. Гораздо более практичным для этих целей оказался другой подход к оцифровке изображений, который использует большинство современных устройств визуализации: растровые дисплеи и многие печатающие устройства.
В растровом формате изображение разбивается на прямоугольную матрицу элементов, называемых пикселами (слегка искаженное PICture ELement — этемент картинки). Матрица называется растром. Для каждого пиксела определяется его яркость и, если изображение цветное, цвет. Если, как это часто бывает при оцифровке реальных сцен или преобразовании в растровый формат (растеризации) векторных изображений, в один пиксел попали несколько элементов, их яркость и цвет усредняются с учетом занимаемой площади. При оцифровке усреднение выполняется аналоговыми контурами аналого-цифрового преобразователя, при растеризации — алгоритмами анти-алиасинга.
Размер матрицы называется разрешением растрового изображения. Для печатающих устройств (и при растеризации изображений, предназначенных для таких устройств) обычно задается неполный размер матрицы, соответствующей всему печатному листу, а количество пикселов, приходящихся на вертикальный или горизонтальный отрезок длиной 1 дюйм; соответствующая единица так и называется — точки на дюйм (DPI, Dots Per Inch).
Для черно-белой печати обычно достаточно 300 или 600 DPI. Однако принтеры, в отличие от растровых терминалов, не умеют манипулировать яркостью отдельной точки, поэтому изменения яркости приходится имитировать, разбивая изображение на квадратные участки и регулируя яркость относительным количеством черных и белых (или цветных и белых при цветной печати) точек в этом участке. Для получения таким способом приемлемого качества фотореалистичных изображений 300 DPI заведомо недостаточно, и даже бытовым принтерам приходится использовать гораздо более высокие разрешения, вплоть до 2400 DPI.
Вторым параметром растрового изображения является разрядность одного пиксела, которую называют цветовой глубиной. Для черно-белых изображений достаточно одного бита на пиксел, для градаций яркости серого или цветовых составляющих изображения необходимо несколько битов (рис. 1.7). В цветных изображениях пиксел разбивается на три или четыре составляющие, соответствующие разным цветам спектра. В промежуточных данных, используемых при оцифровке и редактировании растровых изображений, цветовая глубина достигает 48 или 64 бит (16 бит на цветовую составляющую). Яркостный диапазон современных Мониторов, впрочем, позволяет ограничиться 8-ю битами, т. е. 256 градациями, на одну цветовую составляющую: большее количество градаций просто незаметно глазу.

Рис. 1.7. Растровое изображение

Наиболее широко используемые цветовые модели — это RGB (Red, Green, Blue — красный, зеленый, синий, соответствующие максимумам частотной характеристики светочувствительных пигментов человеческого глаза), CMY (Cyan, Magenta, Yellow — голубой, пурпурный, желтый, дополнительные к RGB) и CMYG — те же цвета, но с добавлением градаций серого. Цветовая модель RGB используется в цветных кинескопах и видеоадаптерах, CMYG — в цветной полиграфии.
В различных графических форматах используется разный способ хранения пикселов. Два основных подхода — хранить числа, соответствующие пикселам, одно за другим, или разбивать изображение на битовые плоскости -сначала хранятся младшие биты всех пикселов, потом — вторые и так далее. Обычно растровое изображение снабжается заголовком, в котором указано его разрешение, глубина пиксела и, нередко, используемая цветовая модель.

Представление звуков

Два основных подхода к хранению звуковых файлов можно сопоставить с векторным и растровым способами хранения изображений: это MIDI и подобные ему форматы, и оцифрованный звук.
В формате MIDI звук генерируется синтезатором, который умеет порождать звуки различного тембра, высоты, длительности и громкости. Тембры этих звуков обычно более или менее соответствуют звукам распространенных музыкальных инструментов. Вместо собственно звука хранится последовательность команд этого синтезатора. Используя в качестве звуковых примитивов фонемы человеческого языка, этот подход можно применить и для синтеза речи.
MIDI-файлы имеют малый объем и, при наличии аппаратного синтезатора, не требуют ресурсов центрального процессора для воспроизведения, поэтому их часто используют в качестве фонового озвучивания игровых программ и Web-страниц. К недостаткам этого формата следует отнести тот факт, что качество его воспроизведения определяется качеством синтезатора, которое у дешевых звуковых карт оставляет желать лучшего, и то, что далеко не всякий звук можно воспроизвести таким способом.
Задача преобразования реального звука в MIDI сродни задаче векторизации растрового изображения и другим задачам распознавания образов, и в общем виде не разрешима.
Оцифрованный звук, напротив, является результатом простого осуществления аналого-цифрового преобразования реального звука. Характеристиками такого звука являются частота дискретизации, разрешение АЦП и количество каналов — моно или стерео.





Дата публикования: 2014-11-18; Прочитано: 554 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...