Сколько символов можно закодировать используя 8 разрядов
ПОДРОБНЫЕ РЕШЕНИЯ СРОЧНО
1. Сколько различных чисел можно закодировать в 8-разрядной ячейке компьютера (его алфавит состоит из двух символов: 0, 1)?
2. Сколько различных чисел можно закодировать в 8-разрядной ячейке троичного процессора (его алфавит состоит из трех символов: 0, 1, -1)?
3. Алфавит языка состоит из 4 букв. Сколько различных трехбуквенных слов можно образовать в этом языке?
4. Алфавит некоторого языка содержит только трехбуквенные слова, которые можно образовывать из букв алфавита в любых комбинациях. Известно, что словарный запас языка составляет 216 слов.
Какова мощность алфавита?
5. Переведите количество информации в следующие единицы измерения количества информации.
бит байт Кбайт Мбайт Гбайт
6. В одной из кодировок Unicode каждый символ кодируется 16 битами. Вова написал текст (в нѐм нет лишних пробелов):
«Ёж, лев, слон, олень, тюлень, носорог, крокодил, аллигатор — дикие животные».
Ученик вычеркнул из списка название одного из животных. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
При этом размер нового предложения в данной кодировке оказался на 16 байт меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название животного.
В кодировке КОИ-8 каждый символ кодируется 8 битами. Андрей написал текст (в нѐм нет лишних пробелов):
«Обь, Лена, Волга, Москва, Макензи, Амазонка — реки».
7. Ученик вычеркнул из списка название одной из рек. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
При этом размер нового предложения в данной кодировке оказался на 8 байтов меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название реки.
8. В кодировке UTF-32 каждый символ кодируется 32 битами. Саша написал текст (в нѐм нет лишних пробелов):
«Мята, тыква, фасоль, артишок, патиссон, лагенария — овощи».
Ученик вычеркнул из списка название одного из овощей. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
При этом размер нового предложения в данной кодировке оказался на 28 байтов меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название овоща.
Answers & Comments
Дано:
Найти:
Решение:
Ответ: 256 чисел
Дано:
Найти:
Решение:
Ответ: 6 561 чисел
Здесь пригодится комбинаторика, а именно правило размещения с повторениями:
Также можно провести параллель с предыдущими заданиями:
Ответ: 64 трехбуквенных слова
Ответ: мощность алфавита — 6 символов
5) Неразборчивое задание
6) Размер нового предложения стал на 16 байт меньше, следовательно, вычеркнутая строка «весит» 16 байт. Т.к. каждый символ кодируется 16 битами (16 / 8 = 2 байта) или 2 байтами, то было вычеркнуто 16 / 2 = 8 символов. Вычитаем из этого кол-ва символов один пробел и одну запятую, получается 8 — 2 = 6 символов — длина вычеркнутого слова. Название животного длиной 6 символов в тексте — тюлень.
Ответ: тюлень
7) Размер нового предложения стал на 8 байтов меньше, следовательно, вычеркнутая строка «весит» 8 байтов. Т.к. каждый символ кодируется 8 битами (8 / 8 = 1 байт) или 1 байтом, то было вычеркнуто 8 / 1 = 8 символов. Вычитаем из этого кол-ва символов один пробел и одну запятую, получается 8 — 2 = 6 символов — длина вычеркнутого слова. Название реки длиной 6 символов в тексте — Москва.
Ответ: Москва
8) Размер нового предложения стал на 28 байтов меньше, следовательно, вычеркнутая строка «весит» 28 байтов. Т.к. каждый символ кодируется 32 битами (32 / 8 = 4 байта) или 4 байтами, то было вычеркнуто 28 / 4 = 7 символов. Вычитаем из этого кол-ва символов один пробел и одну запятую, получается 7 — 2 = 5 символов — длина вычеркнутого слова. Название овоща длиной 5 символов в тексте — тыква.
Сколько различных символов можно закодировать при помощи 8 битов?
Сколько различных символов можно закодировать при помощи 8 битов?
А)278 б)264 в)256 г)254 Заранее спасибо!
256 в в в в в в в в в.
I = 8 бит N = 2 i N = 2 в 8 N = 256 , в)256.
Сколько различных звуковых сигналов можно закодировать с помощью 8 бит?
Сколько различных звуковых сигналов можно закодировать с помощью 8 бит.
В какой кодировочной таблице можно закодировать 65536 различных символов?
В какой кодировочной таблице можно закодировать 65536 различных символов?
Какое наибольшее число количество различных цветов можно закодировать используя 8 бит пожалуйста дайте решение заранее спасибо ?
Какое наибольшее число количество различных цветов можно закодировать используя 8 бит пожалуйста дайте решение заранее спасибо !
Сколько различных символов можно закодировать 11 — ти разрядными битовыми комбинациями?
Сколько различных символов можно закодировать 11 — ти разрядными битовыми комбинациями?
Сколько различных символов можно закодировать при помощи 8 бит?
Сколько различных символов можно закодировать при помощи 8 бит?
4. Сколько различных звуковых сигналов можно закодировать с помощью 8 бит?
4. Сколько различных звуковых сигналов можно закодировать с помощью 8 бит?
5. Сколько нужно бит, чтобы закодировать алфавит из 64 символов?
6. Когда Вы подошли к светофору, горел желтый свет.
Затем зажегся красный.
Какой объем информации Вы получили в момент, когда зажегся красный?
Сколько различных символов можно закодировать 11 — ти разрядными битовыми комбинациями?
Сколько различных символов можно закодировать 11 — ти разрядными битовыми комбинациями?
5. Сколько нужно бит, чтобы закодировать алфавит из 64 символов?
5. Сколько нужно бит, чтобы закодировать алфавит из 64 символов?
Привести пример предложения из информатики, символы которого можно закодировать используя 4 бита и пример предложения, символы которого невозможно закодировать используя 4 бита?
Привести пример предложения из информатики, символы которого можно закодировать используя 4 бита и пример предложения, символы которого невозможно закодировать используя 4 бита.
Обоснуйте свой ответ.
2. Для кодирования символов на маяке используют 3 вида сигналов : «красный», «зелёный» и «жёлтый»?
2. Для кодирования символов на маяке используют 3 вида сигналов : «красный», «зелёный» и «жёлтый».
Сколько различных символов длиной не менее 2 и не более 4 символов можно закодировать с помощью этих сигналов?
На этой странице находится вопрос Сколько различных символов можно закодировать при помощи 8 битов?, относящийся к категории Информатика. По уровню сложности данный вопрос соответствует знаниям учащихся 1 — 4 классов. Здесь вы найдете правильный ответ, сможете обсудить и сверить свой вариант ответа с мнениями пользователями сайта. С помощью автоматического поиска на этой же странице можно найти похожие вопросы и ответы на них в категории Информатика. Если ответы вызывают сомнение, сформулируйте вопрос иначе. Для этого нажмите кнопку вверху.
Компьютерная грамотность с Надеждой
Заполняем пробелы — расширяем горизонты!
Двоичное кодирование текстовой информации и таблица кодов ASCII
Минимальные единицы измерения информации – это бит и байт.
Один бит позволяет закодировать 2 значения (0 или 1).
Используя два бита, можно закодировать 4 значения: 00, 01, 10, 11.
Тремя битами кодируются 8 разных значений: 000, 001, 010, 011, 100, 101, 110, 111.
Сколько значений можно закодировать с помощью нуля и единицы
Из приведенных примеров видно, что добавление одного бита увеличивает в 2 раза то количество значений, которое можно закодировать:
1 бит кодирует —> 2 разных значения (2 1 = 2),
2 бита кодируют —> 4 разных значения (2 2 = 4),
3 бита кодируют —> 8 разных значений (2 3 = 8),
4 бита кодируют —> 16 разных значений (2 4 = 16),
5 бит кодируют —> 32 разных значения (2 5 = 32),
6 бит кодируют —> 64 разных значения (2 6 = 64),
7 бит кодируют —> 128 разных значения (2 7 = 128),
8 бит кодируют —> 256 разных значений (2 8 = 256),
9 бит кодируют —> 512 разных значений (2 9 = 512),
10 бит кодируют —> 1024 разных значений (2 10 = 1024).
Мы помним, что в одном байте не 9 и не 10 бит, а всего 8. Следовательно, с помощью одного байта можно закодировать 256 разных символов. Как Вы думаете, много это или мало? Давайте посмотрим на примере кодирования текстовой информации.
Как происходит кодирование текстовой информации
В русском языке 33 буквы и, значит, для их кодирования надо 33 байта. Компьютер различает большие (заглавные) и маленькие (строчные) буквы, только если они кодируются различными кодами. Значит, чтобы закодировать большие и маленькие буквы русского алфавита, потребуется 66 байт.
Для больших и маленьких букв английского алфавита потребуется ещё 52 байта. В итоге получается 66 + 52 = 118 байт. Сюда надо ещё добавить цифры (от 0 до 9), символ «пробел», все знаки препинания: точку, запятую, тире, восклицательный и вопросительный знаки, скобки: круглые, фигурные и квадратные, а также знаки математических операций: +, –, =, / (это деление), * (это умножение). Добавим также специальные символы: %, $, &, @, #, № и др. Все это вместе взятое как раз и составляет около 256 различных символов.
А дальше дело осталось за малым. Надо сделать так, чтобы все люди на Земле договорились между собой о том, какие именно коды (с 0 до 255, т.е. всего 256) присвоить символам. Допустим, все люди договорились, что код 33 означает восклицательный знак (!), а код 63 – вопросительный знак (?). И так же – для всех применяемых символов. Тогда это будет означать, что текст, набранный одним человеком на своем компьютере, всегда можно будет прочитать и распечатать другому человеку на другом компьютере.
Таблица ASCII
Такая всеобщая договоренность об одинаковом использовании чего-либо называется стандартом. В нашем случае стандарт должен представлять из себя таблицу, в которой зафиксировано соответствие кодов (с 0 до 255) и символов. Подобная таблица называется таблицей кодировки.
Но не всё так просто. Ведь символы, которые хороши, например, для Греции, не подойдут для Турции потому, что там используются другие буквы. Аналогично то, что хорошо для США, не подойдет для России, а то, что подойдет для России, не годится для Германии.
Поэтому приняли решение разделить таблицу кодов пополам.
Первые 128 кодов (с 0 до 127) должны быть стандартными и обязательными для всех стран и для всех компьютеров, это – международный стандарт.
А со второй половиной таблицы кодов (с 128 до 255) каждая страна может делать все, что угодно, и создавать в этой половине свой стандарт – национальный.
Первую (международную) половину таблицы кодов называют таблицей ASCII, которую создали в США и приняли во всем мире.
За вторую половину кодовой таблицы (с 128 до 255) стандарт ASCII не отвечает. Разные страны создают здесь свои национальные таблицы кодов.
Может быть и так, что в пределах одной страны действуют разные стандарты, предназначенные для различных компьютерных систем, но только в пределах второй половины таблицы кодов.
Коды из международной таблицы ASCII
0-31 – Особые символы, которые не распечатываются на экране или на принтере. Они служат для выполнения специальных действий, например, для «перевода каретки» – перехода текста на новую строку, или для «табуляции» – установки курсора на специальные позиции в строке текста и т.п.
32 – Пробел, который является разделителем между словами. Это тоже символ, подлежащий кодировке, хоть он и отображается в виде «пустого места» между словами и символами.
33-47 – Специальные символы (круглые скобки и пр.) и знаки препинания (точка, запятая и пр.).
48-57 – Цифры от 0 до 9.
58-64 – Математические символы: плюс (+), минус (-), умножить (*), разделить (/) и пр., а также знаки препинания: двоеточие, точка с запятой и пр.
65-90 – Заглавные (прописные) английские буквы.
91-96 – Специальные символы (квадратные скобки и пр.).
97-122 – Маленькие (строчные) английские буквы.
123-127 – Специальные символы (фигурные скобки и пр.).
За пределами таблицы ASCII, начиная с цифры 128 по 159, идут заглавные (прописные) русские буквы. А с цифры 160 по 170 и с 224 по 239 – маленькие (строчные) русские буквы.
Кодировка слова МИР
Пользуясь показанной кодировкой, мы можем представить себе, как компьютер кодирует и затем воспроизводит. Например, рассмотрим слово МИР (заглавными буквами). Это слово представляется тремя кодами:
букве М соответствует код 140 (по национальной российской системе кодировки),
для буквы И – это код 136 и
буква Р – это 144.
Но как уже говорилось ранее, компьютер воспринимает информацию только в двоичном виде, т.е. в виде последовательности нулей и единиц. Каждый байт, соответствующий каждой букве слова МИР, содержит последовательность из восьми нулей и единиц. Используя правила перевода десятичной информации в двоичную, можно заменить десятичные значения кодов букв на их двоичные аналоги.
Десятичной цифре 140 соответствует двоичное число 10001100. Это можно проверить, если сделать следующие вычисления: 2 7 + 2 3 +2 2 = 140. Степень, в которую возводится каждая «двойка» – это номер позиции двоичного числа 10001100, в которой стоит «1». Причем позиции нумеруются справа налево, начиная с нулевого номера позиции: 0, 1, 2 и т.д.
Более подробно о переводе чисел из одной системы счисления в другую можно узнать, например, из учебников по информатике или через Интернет.
Аналогичным образом можно убедиться, что цифре 136 соответствует двоичное число 10001000 (проверка: 2 7 + 2 3 = 136). А цифре 144 соответствует двоичное число 10010000 (проверка: 2 7 + 2 4 = 144).
Таким образом, в компьютере слово МИР будет храниться в виде следующей последовательности нулей и единиц (бит): 10001100 10001000 10010000.
Разумеется, что все показанные выше преобразования данных производятся с помощью компьютерных программ, и они не видны пользователям. Они лишь наблюдают результаты работы этих программ, как при вводе информации с помощью клавиатуры, так и при ее выводе на экран монитора или на принтер.
Неужели нужно знать все коды?
Следует отметить, что на уровне изучения компьютерной грамотности пользователям компьютеров не обязательно знать двоичную систему счисления. Достаточно иметь представление о десятичных кодах символов.
Только системные программисты на практике используют двоичную, шестнадцатеричную, восьмеричную и иные системы счисления. Особенно это важно для них, когда компьютеры выводят сообщения об ошибках в программном обеспечении, в которых указываются ошибочные значения без преобразования в десятичную систему.
Упражнения по компьютерной грамотности, позволяющие самостоятельно увидеть и почувствовать описанные системы кодировок, приведены в статье «Проверяем, кодирует ли компьютер текст?»
Кодирование информации. Арифметические операции над машинными кодами
Любая информация, поступающая в ЭВМ, преобразуется в двоичный код. Это могут быть тексты, изображения, числа, звуки и т. д. Все клавиши клавиатуры компьютера закодированы 8-разрядными двоичными кодами таким образом, что любая буква латинского и русского алфавита, как строчная, так и прописная, цифры десятичной системы счисления, знаки препинания и другие служебные символы имеют свой индивидуальный двоичный код.
Поскольку двоичное 8-разрядное число (байт) может иметь 2 8 = 256 комбинаций, то этого вполне достаточно для кодирования сразу нескольких текстовых алфавитов. Изображение на экране компьютера представляется в виде растрового расположения точек (пикселей). Информация о содержании каждой точки хранится в одном 8-разрядном двоичном коде. Это позволяет отображать черно-белые изображения с 256 градациями яркости.
На кодирование звукового элемента требуется от нескольких единиц до десятков байтов и т. д.
Одна страница текста имеет информационный объем около 3 Кбайт, один цветной экранный кадр содержит около 3 Мбайт, а «вес» фильма зависит от формата видео. К примеру, полнометражный фильм в различных форматах займет такой объем:
- • MPEG4 (AVI) — от 700 Мбайт до 1,5 Гбайт;
- • MPEG2 (DVD) — 4-5 Гбайт;
- • для Blue Ray и HDTV — 20 Гбайт и более.
- 1 Гбайт информации может содержать:
- • 50 000 текстовых интернет-страниц;
- • 200—1000 фотографий (в зависимости от качества);
- • 17 ч музыки в формате mp3;
- • 200 программ, утилит объемом до 5 Мбайт;
- • десятки видеоклипов или 1,5 видеофильма в формате mpeg4 (avi);
- • неограниченное время нахождения в простом чате и 40 ч — в видеочате;
- • месяц онлайн-игр по 8 ч в день (не очень требовательных);
- • сотни отправленных и полученных открыток и фотографий;
- • 80 ч онлайн-радио.
Для преобразования числовой, текстовой, графической, звуковой информации в цифровую форму необходимо применить кодирование.
Кодирование информации — это преобразование данных одного типа через данные другого типа, т. е. представление сообщений в конкретном виде при помощи некоторой последовательности знаков (рис. 2.12).
if способТодирова Н И nJ
С помощью специальных рисунков и изображений
Символьный или знаковый
С помощью речи или письма (символами того же алфавита, что и исходный текст)
Рис. 2.12. Различные способы кодирования
Правило отображения одного набора знаков в другой называют кодом.
Примеры кодирования информации:
SOFbCQ 4 дь 01010011 НКМ ОБ ЕАТР;
• символьным или знаковым способом
Способ представления информации с помощью двух символов (0 и 1) называют двоичным кодом.
В ЭВМ применяют систему двоичного кодирования, основанную на представлении данных последовательностью двух знаков: 1 и 0, которые называют двоичными цифрами.
Компьютер может обрабатывать данные, которые представлены в специальном виде — только с помощью нулей и единиц. Каждый 0 или 1 называют битом, т. е. единицей информации в ЭВМ.
Бит — это одна двоичная цифра: 0 или 1. Одним битом можно закодировать два значения: 1 или 0. Двумя битами можно закодировать уже четыре значения: 00, 01, 10, 11. Тремя битами кодируют 8 разных значений. Добавление одного бита удваивает количество значений, которое можно закодировать:
биты . 12 3 4 5 6 . п
значений . 2 4 8 16 32 64 . 2″.
Целые числа кодируют двоичным кодом путем деления числа на 2.
В зависимости от решаемой задачи байт может содержать закодированное представление различных типов данных.
Кодирование целых и действительных чисел
Целые числа кодируют просто переводом чисел из одной системы счисления в другую.
Для кодирования доступно несколько способов представления действительных чисел: 4, 8 и 10-байтное (32, 64 и 80-разрядное соответственно). При этом число преобразуют в стандартный вид.
Простейшим и исторически первым является кодирование целых чисел. Целые числа представляют в двоичном виде следующим образом:
- 00000000, = 010;
- 00000001“ = 1|0;
- 111111112 = 25510.
Диапазон целых чисел, кодируемых одним байтом, определяется числом возможных комбинаций из восьми нулей и единиц. Это число равно 2 х , т. е. 256. Если надо закодировать число больше 255, то два байта объединяют вместе и используется 16 бит. Это дает 2 16 , т. е. 65 536 комбинаций. Еще большие целые числа можно представить с помощью 8 байт.
Более сложное представление существует для вещественных (не целых) чисел, и обработка таких чисел значительно сложнее для компьютера. В ЭВМ используют три вида чисел:
- • с фиксированной точкой (запятой);
- • с плавающей точкой (запятой);
- • двоично-десятичные.
- (Точка (запятая) — это подразумеваемая граница целой и дробной частей числа.)
У чисел с фиксированной точкой в двоичном формате предполагается строго определенное место точки (запятой).
Другой формой представления чисел является представление их в виде чисел с плавающей точкой (запятой). Например, число А|0 — 373 можно представить в виде 0,373 • 10 3 .
Третья форма представления двоичных чисел — двоично-десятичная. Ее появление связано с обработкой больших объемов информации. При обработке больших массивов десятичных чисел (например, больших финансовых документов) приходится тратить значительное время на перевод этих чисел из десятичной системы счисления в двоичную для последующей обработки и обратно — для вывода результатов. Каждый такой перевод требует выполнения двух-четырех десятков машинных команд. С включением в состав отдельных ЭВМ специальных функциональных блоков или спецпроцессоров десятичной арифметики появляется возможность обрабатывать десятичные числа напрямую, без их преобразования, что сокращает время вычислений, например:
Положение десятичной точки (запятой), отделяющей целую часть от дробной, обычно заранее фиксируется. Для кодирования нечисловой информации используют следующий алгоритм.
Все возможные значения кодируемой информации нумеруются и эти номера кодируются с помощью двоичного кода.
Кодирование символьной и текстовой информации в ЭВМ
Для кодирования символьной или текстовой информации применяют различные специальные системы. При вводе информации с клавиатуры кодирование происходит при нажатии 88
2.4. Кодирование информации. Арифметические операции над машинными кодами клавиши, на которой изображен требуемый символ. При этом в клавиатуре вырабатывается так называемый скан-код, представляющий собой двоичное число, равное порядковому номеру клавиши.
Номер нажатой клавиши никак не связан с формой символа, нанесенного на клавише.
Для кодирования одного символа клавиатуры используют 8 бит — 1 байт (с помощью одного байта можно закодировать 2 8 = 256 символов, т. е. восемь двоичных разрядов могут закодировать 256 различных символов).
Для представления текстовой информации используют таблицу нумерации символов, или таблицу кодировки символов, в которой каждому символу соответствует целое число (порядковый номер).
Так, в таблицах стандарта Unicode и UTF-8/16/32 есть символы практически всех алфавитов (включая устаревшие), а также способы представления этой таблицы в виде переменного числа байт. Данный стандарт используют в настоящее время.
Варианты UTF можно рассматривать как техническую реализацию для некоторых практических целей (табл. 2.8).
Таблица стандарта UTF
Лучше всего подходит для данных на основе латинского символа (или ASCII), принимает только 1 байт за символ, но размер растет соответственно (и в худшем случае может вырасти до 6 байт на символ)
Занимает минимум 2 байта на символ, что достаточно для существующего набора основных языков с фиксированным размером (но размер по-прежнему является переменной и может вырасти до 4 байт на символ)
Окончание табл. 2.8
Позволяет использовать простые алгоритмы в виде символов фиксированного размера (4 байта), но с недостатком памяти
Все кодировки Unicode подходят для поиска и сравнения, исключая ошибочный результат в результате совпадения разных частей кода символов. Данные формы кодирования соблюдают принцип неналожения, что отличает их от других многобайтовых восточноазиатских кодировок.
Другим аспектом непересечения является то, что каждый символ имеет четко определяемые границы. При этом отпадает необходимость сканирования неопределенного числа предыдущих символов. Данную особенность кодировок иногда называют самосинхронизацией. Искажение одной единицы кода введет к искажению только одного символа, а окружающие символы остаются нетронутыми. В 8-битном формате преобразования, если указатель ссылается на байт, начинающийся с Юхххххх (в двоичной кодировке), для поиска начала символа потребуется от одного до трех обратных переходов (рис. 2.13).
- 84 44
- 44
Trail and Single
Рис. 2.13. Самосинхронизация
Unicode определяет один огромный набор символов, присваивая каждому символу уникальное целочисленное значение.
В кодировке UTF-8/16/32 различают между собой способы кодирования информации.
Кодировка UTF-8 создана для совместимости с байт-ориентированными системами на основе ASCII. Большая часть существующего программного обеспечения и практика ин-90
формационных технологий длительное время основывались на представлении символов в виде последовательности байтов. Множество протоколов зависит от неизменности и использует либо не использует специальные управляющие символы. Простым способом адаптировать Unicode к таким ситуациям можно, применив 8-битное кодирование для представления его символов, эквивалентных любому символу ASCII или управляющему символу.
В кодировке UTF-8 переменной длины, состоящей из 8-битных единиц хранения информации, старшие биты обозначают, к какой части последовательности относится каждый отдельный байт. Один диапазон значений отведен для первого элемента последовательности кода, другой — для последующих. Это обеспечивает непересекаемость кодировки (рис. 2.14).
А 00 |00 1 00 |41
о 00 1 00 1 03 |А9
— 11.
00 |00 18А |9Е
00 | 011 03 |84
А 41 1 00 1 00 |00
АЗ | 031 00 100
9Е | 8А| 00 |00
JJL 84 | 03 | 01 |00
JJL D8 | ОС | DF | 84
F0 | 90 18Е | 84
Рис. 2.14. Диапазон значений стандарта UTF
UTF-8-кодировка полностью поддерживает коды ASCII (0x00-0x7F). Это означает, что символы U+0000-U+007F конвертируются в единственный байт 0x00-0x7F UTF-8 и таким образом становятся неотличимыми от ASCII. Более того, во избежание многозначности значения 0x00-0x7F не используют больше ни в одном байте представления символов Unicode. Для кодирования неидеографических символов, отличных от ASCII, используют последовательность из двух байтов. Символы диапазона U+0800-U+FFFF представлены тремя байтами, а дополнительные символы с кодами больше U+FFFF требуют четырех байтов.
Консорциум Unicode в полной мере поддерживает все три формы кодировок. Важно не противопоставлять UTF-8 и Unicode, так как все форматы преобразования — одинаково правомерные воплощения форм кодирования символов стандарта Unicode.
Кодировка UTF-32 использует 32-битные значения для каждого символа. Это позволяет использовать код фиксированной ширины для каждого символа.
Кодировка UTF-16 по умолчанию использует 16 бит, это дает только 65к возможных символов, что недостаточно для полного набора Unicode. Поэтому некоторые символы используют пары 16-битных значений.
Кодировка UTF-8 по умолчанию использует 8-битные значения, т. е. 127 первых значений являются однобайтовыми символами фиксированной ширины (самый старший бит обозначает начало многобайтовой последовательности, оставляя 7 бит для фактического значения символа). Все остальные символы кодируются как последовательности длиной до 4 байтов (если используется память).
Любой ASCII-символ напрямую совместим с UTF-8, поэтому для обновления устаревших приложений UTF-8 более приемлем. Практически во всех случаях такой стандарт будет использовать наименьшую память, но относительно ширины символа (это может быть 1, 2, 3 или 4 символа в ширину) будут затруднены манипуляции со строкой.
Кодировка UTF-32, напротив, использует большую часть памяти (каждый символ имеет фиксированную ширину 4 байта), поэтому манипуляции со строками становятся намного проще. Можно вычислить количество символов в строке исходя из длины строки в байтах, чего нельзя сделать с помощью кодировки UTF-8.
Кодировка UTF-16 является компромиссным вариантом, позволяя большинству символов вписываться в 16-битное значение фиксированной ширины. При этом используется меньше памяти, чем в кодировке UTF-32, но практически всегда больше памяти, чем в кодировке UTF-8.
Все кодировки могут кодировать один и тот же набор символов, но каждый из них представляет собой разные последовательности байтов. Ранее при кодировках применялся стандарт таблиц символов ДКОИ, КОИ, сейчас эти таблицы практически не используются.
К таблицам сиволов относится стандарт ASCII (8-разрядная система кодирования), содержащая две таблицы кодирования — базовую и расширенную.
Первая таблица содержит 128 основных символов, в ней размещены коды символов английского алфавита (прил. 2). Коды с 32 по 127 являются стандартными и обязательными для всех стран и всех компьютеров. Такую таблицу ASCII называют American Standard Code for Information Interchage (Американский стандартный код для обмена информацией). Так как в этот стандарт не входят символы национальных алфавитов других стран, то в каждой стране 128 кодов расширенных символов заменяют символами национального алфавита. Коды носят нумерацию (128—255), каждая страна может создавать свой стандарт — национальный.
Применялись и другие таблицы кодирования KOI8-U, Windows-1251 (прил. 3) и т. д. Так, например, кодировка символов русского языка Windows-1251 использовалась для компьютеров, которые работали под Windows.
Другая кодировка для русского языка КОИ-8 ранее широко использовалась в компьютерных сетях и русскоязычном секторе сети Интернет (прил. 4).
В настоящее время существует универсальная система Unicode, основанная на 8, 16 и 32-разрядном кодировании символов. Данная система обеспечивает универсальные коды для различных символов, т. е. в этой таблице могут разместиться символы языков большинства стран мира (рис. 2.15).
- 256 СИМВОЛОВ = 66 + 52 + 10 + 129
- 33 строчные +
- 33 прописные
- 26 строчных +
- 26 прописных
- 66 букв русского алфавита
- 52 буквы латинского алфавита
Цифры от 0 до 9 (10 цифр)
Знаки препинания, арифметические знаки и т. д. (129 знаков)
Рис. 2.15. Кодирование текстовой информации
Пример. Для записи текста использовался 256-символьный алфавит. Каждая страница содержит 30 строк по 70 символов в строке. Какой объем информации содержат пять страниц текста?
Решение. 256 = 2 і (1 = 8 бит — информационный вес одного символа).
Подсчитываем общее количество символов в тексте
30 • 70 • 5 = 10 500 символов.
Находим объем информации в тексте
10 500 • 8 = 84 000 бит = 10 500 байт = 10,25 Кбайт.
Процесс кодирования чисел в компьютере
Среди используемых чисел встречаются натуральные, целые, рациональные, иррациональные. В вычислительных машинах применяют две формы представления чисел:
- • естественная форма, или форма с фиксированной запятой (точкой);
- • нормализованная форма, или форма с плавающей запятой (точкой).
С фиксированной запятой числа изображают в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной, например: 32,54; 0,0036; —108,2. Эта форма проста, естественна, но имеет небольшой диапазон представления чисел и поэтому не всегда приемлема при вычислениях. Если в результате операции получится число, выходящее за допустимый диапазон, происходит переполнение разрядной сетки и дальнейшие вычисления теряют смысл. В современных компьютерах форму представления чисел с фиксированной запятой используют только для целых чисел.
С плавающей запятой числа изображают в виде
где М — мантисса числа (правильная дробь в пределах 0,1 2 ; 0,36 • 10’ 2 ; -0,1082 • 10 3 .
Нормализованная форма представления имеет огромный диапазон чисел и является основной в современных ЭВМ.
Любое десятичное число, прежде чем оно попадает в память компьютера, преобразуется по схеме
После этого мантисса с ее знаком заменяется кодом мантиссы с ее знаком, а порядок числа с его знаком заменяется кодом порядка с его знаком.
Указанные коды двоичных чисел — это образы чисел, которые и воспринимают вычислительные устройства.
Все операции в ЭВМ выполняют над числами, представленными специальными машинными кодами. Их использование позволяет обрабатывать знаковые разряды чисел так же, как и значащие разряды, а также заменять операцию вычитания операцией сложения.
Каждому двоичному числу можно поставить в соответствие несколько видов кодов. Различают следующие коды двоичных чисел: прямой (П), обратный (ОК) и дополнительный (ДК).
Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (0 или 1) перед его старшим числовым разрядом.
Примеры:
А|0 = +10; А, = +1010; [AJ = 0|1010;
Прямой код двоичного числа (это либо мантисса, либо порядок) образуется по следующему алгоритму:
- 1) определить данное двоичное число: либо целое (порядок), либо правильная дробь (мантисса);
- 2) если это дробь, то цифры после запятой можно рассматривать как целое число;
- 3) если это целое и положительное двоичное число, то вместе с добавлением нуля в старший разряд число превращается в код. Для отрицательного двоичного числа перед ним ставится единица. Например, число Х2 = —0,1011012—> код числа X = 1101101; число У2 = +0,11011012—> код числа Ур = 01101101.
Подчеркиванием выделяют знаковые разряды.
Обратный код двоичного числа образуется по следующему алгоритму:
1) обратный код положительных чисел совпадает с их прямым кодом;
2) обратный код отрицательного числа содержит единицу в знаковом разряде числа, а значащие разряды числа заменяются инверсными, т. е. нули заменяются единицами, а единицы нулями.
Примеры:
Свое название обратный код получил потому, что коды цифр отрицательного числа заменены инверсными. Наиболее важные свойства обратного кода чисел:
- • сложение положительного числа С с его отрицательным значением в обратном коде дает так называемую машинную единицу МЕок = 1Ц111, состоящую из единиц в знаковом и в значащих разрядах числа;
- • нуль в обратном коде имеет двоякое значение. Он может быть как положительным числом 0|0000, так и отрицательным 1|1111. Значение отрицательного числа совпадает с МЕок. Двойственное представление нуля явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.
Обратный код положительного двоичного числа совпадает с прямым кодом, а для отрицательного числа нужно, исключая знаковый разряд, во всех остальных разрядах нули заменить единицами и наоборот.
Примеры:
число X = —0,10101, -> X = 1 10101 — X = 101010;
число И = +0,1101, — Y = 01101 = Yr .
Дополнительный код положительных чисел совпадает с их прямым кодом. Дополнительный код отрицательного числа представляет собой результат суммирования обратного кода числа с единицей младшего разряда (2° — для целых чисел, 2 -к — для дробных).
Примеры:
Основные свойства дополнительного кода:
• сложение дополнительных кодов положительного числа С с его отрицательным значением дает так называемую машинную единицу дополнительного кода:
т. е. число 10 (два) в знаковых разрядах числа;
• в дополнительном коде представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы ME .
Дополнительный код положительного числа совпадает с его прямым кодом. Дополнительный код отрицательного числа образуется путем прибавления единицы к обратному коду.
Примеры:
число X = -0,100107 — X = 110010 -> X = 101101 -> X = = 101110;
число К = +0,1011 -> Y =01011 = Y = Y .
2 ’ пр “ — обр доп
Модифицированные обратные и дополнительные коды
Модифицированные обратные (мок) и дополнительные (мдк) коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак «+» в этих кодах кодируется двумя нулевыми знаковыми разрядами, а знак «—» — двумя единичными разрядами.
Примеры:
Целью введения модифицированных кодов являются фиксация и обнаружение случаев получения неправильного результата, когда значение последнего превышает максимально возможный результат в отведенной разрядной сетке машины. В этом случае перенос из значащего разряда может исказить значение младшего знакового разряда. Значение знаковых разрядов 01 свидетельствует о положительном переполнении разрядной сетки, а 10 — об отрицательном переполнении. В настоящее время практически во всех компьютерах роль сдвоенных разрядов для фиксации переполнения разрядной сетки играют переносы в знаковый разряд и из знакового разряда.
Арифметические действия в машинных кодах
Сложение, а также вычитание чисел в обратном или дополнительном кодах выполняют с использованием обычного правила арифметического сложения многоразрядных чисел. Это пра-97 вило распространяется и на знаковые разряды чисел. Различие обратного и дополнительного кодов связано с последующими действиями с единицей переноса из старшего разряда, изображающего знак числа. При сложении чисел в обратном коде эту единицу надо прибавить к младшему разряду результата, а в дополнительном коде единица переноса из старшего разряда игнорируется, так как дополнительный код из обратного получается как раз прибавлением единицы.
Сложение и вычитание машинных чисел. Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код согласно таблице 2.9.
Сложение (вычитание) машинных чисел
Скобки в представленных выражениях указывают на замену операции вычитания операцией сложения с обратным или дополнительным кодом соответствующего числа. Сложение двоичных чисел осуществляется последовательно, поразрядно в соответствии с таблицей. При выполнении сложения цифр необходимо соблюдать следующий алгоритм:
- 1) слагаемые должны иметь одинаковое число разрядов. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа;
- 2) знаковые разряды участвуют в сложении так же, как и значащие;
- 3) необходимые преобразования кодов производят с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу;
- 4) при преобразовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом. При использовании ДК 98
2.4. Кодирование информации. Арифметические операции над машинными кодами единица переноса теряется. Знак результата формируется автоматически, результат представляется в том коде, в котором представлены исходные слагаемые.
1. Сложить два числа: А10 = 7, В10 = 16.
Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:
Сложение в обратном или дополнительном коде дает один и тот же результат:
2. Сложить два числа: А]0 = +16, В10 = —7 в ОК и ДК.
По таблице необходимо преобразование А+(—В), в которой второй член преобразуется с учетом знака:
Сложение в ОК
Сложение в ДК
При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда. В случае ДК этот перенос игнорируется.
Пример сложения чисел +18 и —7 приведен в таблице 2.10.
Таблица 2.10
Сложение чисел в ОК и ДК
- 00010010
- 11111000
- 00010010
- 11111001
Игнорировать —>
Как в обратном, так и в дополнительном кодах результаты сложения совпали и равны 10112= 1110.
Умножение и деление машинных чисел. Умножение и деление двоичных чисел производят в прямом коде, а их знаки используют лишь для определения знака результата. Как и в математике, умножение и деление сводится к операциям сдвигов и сложений (с учетом знака числа).
Полученные коды мантиссы и порядка для каждого числа помешают в ячейки памяти ЭВМ. Для каждой цифры, входящей в код, в ячейке памяти отводится свое отдельное место.
В современных моделях ПК в зависимости от способа обработки могут обрабатываться объемы в 4 слова (8 байт в 64-битной архитектуре), а также в 8 и 16 слов одновременно (128 и 256 бит соответственно). Два последних варианта не являются стандартными для современных ПК, однако такая возможность реализована достаточно давно. В некоторых случаях есть возможность обрабатывать до 32 слов одновременно, что встречается редко так как обработка информации ведется двойными словами, содержащими 4 байта.
Числа с фиксированной запятой имеют формат в 1, 2, 4, 8 байт и т. д. (до 32 включительно) одного слова, а числа с плавающей запятой — 10 байт. Размер типа данных в языках программирования тоже может варьироваться и составлять 4, 8 и 10 байт. 100
Пример. Дано число с плавающей запятой —0,625 • 10 8 . Нужно преобразовать его в машинный код и заполнить 32-разрядную ячейку памяти. Мантисса числа 0,62510 = 0,1012.
Поскольку порядок чисел может быть как положительным, так и отрицательным, то машинный порядок смещается относительно естественного таким образом, чтобы весь диапазон машинных порядков изменялся от нуля до максимума, определяемого количеством разрядов, выделяемых для размещения чисел порядка.
Если обозначить машинный порядок через R, а естественный через г, то связь между ними будет такая:
Для двоичной системы счисления R2 = г2 + 1000000,.
В нашем примере порядок г равен 8|0 = 1000,, следовательно /?2 = 1001000.
В двоичной системе исходное число выглядит так: —0,101 • 10 1000 . Запись этого числа в 32-разрядной ячейке представлена в таблице 2.11.
Таблица 2.11
Пример записи числа в 32-разрядной ячейке
КОДИРОВАНИЕ ЦВЕТОВОЙ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ
При кодировании происходит разложение цвета на основные составляющие. Любой цвет можно представить в виде комбинации трех основных цветов: красного, зеленого и синего. Эти цвета являются цветовыми составляющими и позволяют получить цветное изображение с различными оттенками. Такая цветовая модель называется RGB (по первым буквам английских названий цветов — Red (красный), Green (зеленый), Blue (синий)).
RGB-модель является самодостаточной и не нуждается ни в каких дополнительных яркостях (рис. 2.16).
- (0,0^255)
- (255 ,0,255)
- (25 5,255,255)
- (255,0,0)
- — (0,255,255) >
- (255,255,0)
- (0,255,0)
Рис. 2.16. Кодирование цвета с использованием цветовых составляющих
Для получения множества оттенков и богатой палитры цветов в цветовой модели HSL базовым цветам задаются различные интенсивности (яркость, контрастность, насыщенность).
Например, при глубине цвета в 24 бита (по 8 бит на каждый цвет) получают ЛГ = 28 = 256 уровней интенсивности, заданных двоичными кодами — от 00000000 (минимальной) до 11111111 (максимальной).
Если закодировать цвет точки с помощью трех байтов (24 бита), то первый байт будет нести информацию о красной составляющей, второй — о зеленой, а третий — о синей. Чем больше значение байта цветовой составляющей, тем ярче цвет. Задавая любые значения (от 0 до 255) для каждого из 3 байтов, с помощью которых кодируется цвет, можно закодировать любой из 16,5 млн цветов.
В процессе дискретизации в системе задания цвета используются разные палитры (рис. 2.17).
Рис 2.17. Система кодировки RGB
Каждый цвет рассматривается как будущее состояние точки. Количество цветов Уи количество информации /связаны между собой и вычисляются по формуле
Такие данные необходимы для кодирования цвета каждой по отдельности точки.
Например, в самом простом случае палитра цветов состоит из двух — черного и белого. Значит, каждая точка на экране принимает либо «черное», либо «белое» состояние. По заданной формуле можно вычислить количество информации, необходимое для кодирования цвета каждой точки.
Количество бит, необходимое для кодирования цвета точки, — это глубина цвета.
Цветные изображения строятся с двоичным кодом цвета каждой точки. Эта информация хранится в видеопамяти. Такие
изображения меняют глубину цвета. Каждый цвет имеет свой
Рис. 2.18. Цветовая кодовая палитра из 256 цветов
Для кодирования цвета одной точки необходимо определенное количество байтов, в зависимости от того, сколько цветов надо передать. Для кодирования рисунка его необходимо разбить на точки. Чем больше будет точек, тем точнее будет передача рисунка. Начиная с левого верхнего угла и двигаясь по строкам слева направо, кодируется цвет каждой точки (рис. 2.19).
Рис. 2.19. Точечное представление рисунка (кодирование)
КОДИРОВАНИЕ ЗВУКОВОЙ ИНФОРМАЦИИ
Звук представляет собой распространяющуюся в воздухе, воде или другой среде волну с непрерывно меняющейся амплитудой и частотой.
Человек воспринимает звуковые волны (колебания воздуха) в форме звука различных громкости и тони. Чем больше интенсивность звуковой волны, тем громче звук, чем больше частота волны, тем выше тон звука (рис. 2.20).
Низкий звук Высокий звук
Рис. 2.20. Зависимость громкости и высоты тона звука от интенсивности и частоты звуковой волны
Человеческое ухо воспринимает звук с частотой от 20 (низкий звук) до 20 000 колебаний/с (высокий звук).
Для измерения громкости звука применяют специальную единицу — децибел (дБ). Человек может воспринимать звук в огромном диапазоне интенсивностей, в котором максимальная амплитуда больше минимальной в 10 12 (120 дБ) для кратковременного и 10 8 раз (80 дБ) для долговременного прослушивания звуковых сигналов.
Уменьшение или увеличение громкости звука на 10 дБ соответствует уменьшению или увеличению интенсивности звука в 10 раз (табл. 2.12).
Таблица 2.12
Громкость звука
Нижний предел чувствительности человеческого уха
Основу кодирования звука составляют процесс преобразования колебаний воздуха в колебания электрического тока и последующая дискретизация аналогового электрического сигнала.
Кодирование звуковой информации осуществляют с помощью специальных программных (аппаратных) кодировщиков. Для обратного процесса используют программы-декодировщики.
Воспроизведение звуковой информации осуществляют посредством множества музыкальных аудиоприложений, портативных аудиоплееров и специализированных аудиосистем.
Качество воспроизведения закодированного звука зависит от определенных факторов, например от качества аналогового тракта звуковоспроизводящей аппаратуры.
Точность кодирования звука до определенного предела (согласно теореме Котельникова) зависит от частоты и разрешения (битности) дискретизации.
Методы кодирования звуковой информации двоичным кодом достаточно разнообразны. Можно выделить следующие основные методы кодирования:
- • FM-разложение сложного звука на гармонические ряды;
- • таблично-волновой синтез;
- • полиномиальное FLAC-кодирование.
Метод FM-разложения основан на том, что любой сложный звук можно разложить на последовательность простых сигналов разных частот, каждый из которых представляет синусоиду, а следовательно, может быть описан числовыми параметрами.
Метод таблично-волнового синтеза предусматривает хранение в отдельных таблицах пронумерованных образцов различных музыкальных звуков. Речь идет о кодировании с использованием банка инструментов. Однако в настоящее время приемы таблично-волнового синтеза отошли на второй план и уже не актуальны.
Метод полиномиального кодирования (FLAC) — достаточно популярный. В отличие от аудиокодеков, обеспечивающих сжатие звуковой информации с потерями (MP3, AAC, WMA, Ogg Vorbis, Opus), FLAC не удаляет информацию из аудиопотока и подходит как для прослушивания музыки на высококачественной звуковоспроизводящей аппаратуре, так и для архивирования аудиоколлекции. Сегодня формат FLAC поддерживается множеством аудиоприложений и имеет большое число разнообразных аппаратных реализаций.
Временная и уровневая дискретизация звука. Для того чтобы компьютер мог обрабатывать звук, непрерывный звуковой сигнал должен быть преобразован в цифровую дискретную форму с помощью временной и уровневой дискретизации.
Непрерывная звуковая волна разбивается на отдельные маленькие временные участки, для каждого из которых устанавливается определенная величина интенсивности звука.
Уровневая зависимость громкости звука от времени заменяется дискретной последовательностью уровней громкости. На графике это выглядит как замена гладкой кривой последовательностью «ступенек» (рис. 2.21).
Частота дискретизации. Для записи аналогового звука и голосового преобразования в цифровую форму используют аналого-цифровые преобразователи (АЦП).
Голосовое преобразование — преобразование сигнала в цифровую форму производится АЦП. Практически все такие преобразователи используют двоичную систему представления при 106
2.4. Кодирование информации. Арифметические операции над машинными кодами равномерной шкале и характеризуются определенным числом разрядов.
Рис. 2.21. Временная дискретизация звука
Увеличение числа разрядов повышает точность измерения и позволяет расширить динамический диапазон измеряемых сигналов. Потерянная из-за недостатка разрядов АЦП информация невосстановима. Существуют лишь оценки погрешности, например через мощность шума, вызванного ошибкой в последнем разряде, однако не всегда они удовлетворительны. Слух человека логарифмичен (закон Вебера — Фехнера), и маломощная помеха в диапазоне, где мощность сигнала невысока, хорошо различима. Для того чтобы оценить влияние помехи, вводится понятие «отношение сигнал — шум» (в дБ) — отношение мощности сигнала (Рс) к мощности шума (Р ):
где А — амплитуда сигнала и шума соответственно.
За нуль в цифровой обработке принято принимать максимально возможный уровень сигнала, в акустике, наоборот, — минимально различимый слухом уровень звука.
Качество полученного цифрового звука зависит от количества измерений до определенного уровня громкости звука в единицу времени, т. е. от частоты дискретизации. Чем большее количество измерений производится за 1 с, тем точнее цифровой звуковой сигнал повторяет кривую аналогового сигнала.
Частота дискретизации звука — это количество измерений громкости звука за 1 с.
Глубина кодирования звука. Каждой «ступеньке» присваивается определенное значение уровня громкости звука. Уровни громкости звука можно рассматривать как набор возможных состояний N, для кодирования которых необходимо определенное количество информации I, называемое глубиной кодирования звука.
Глубина кодирования звука — это количество информации, которое необходимо для кодирования дискретных уровней громкости цифрового звука.
При известной глубине кодирования количество уровней громкости цифрового звука можно рассчитать по формуле N = 2 / =2 1б = 65 536.
В процессе кодирования каждому уровню громкости звука присваивается свой 16-битовый двоичный код. Наименьшему уровню звука будет соответствовать код 0000000000000000, а наибольшему — 1111111111111111.
Качество оцифрованного звука. Чем больше частота и глубина дискретизации звука, тем более качественным будет звучание оцифрованного звука. Кроме того, качество звука зависит от аналогового тракта воспроизводящей аппаратуры. Цифровой сигнал характеризуется также точностью повторения оригинального сигнала.
Необходимо помнить, что чем выше качество цифрового звука, тем больше информационный объем звукового файла.
Сжатие (компрессия) аудиоданных представляет собой процесс уменьшения скорости цифрового потока за счет сокращения статистической и психоакустической избыточности цифрового звукового сигнала.
Оценить информационный объем цифрового стереозвукового файла длительностью звучания 1 с при среднем качестве звука (глубина кодирования 16 бит, 24 000 измерений/с) можно следующим равенством:
16 • 24 000 • 2 = 768 000 (бит) = 96 000 (байт) = 93,75 (Кбайт).
Методы сокращения статистической избыточности аудиоданных также называют сжатием без потерь, а соответственно, методы сокращения психоакустической избыточности — сжатием с потерями. 108
Сжатие звука без потерь — совокупность преобразований, позволяющая эффективно сжимать звуковые данные с возможностью их полного восстановления. Как и любое сжатие без потерь, сжатие звуковых данных использует какую-либо особенность данных. В данном случае это:
- • знание границ семплов (отсчетов): сколько бит или байт отводится на один семпл и сколько — на семпл аудиоканалов;
- • невысокая производная: значения соседних семплов мало различаются;
- • невысокая вторая производная: значения соседних трех семплов близки к линейной функции;
- • близость левого и правого каналов — уровней сигнала в левой и правой колонке.
Важными условиями применения такого метода преобразования являются возможность восстанавливать исходный сигнал без искажений, способность обеспечивать наибольшую концентрацию энергии при небольшом числе коэффициентов преобразования, быстрый вычислительный алгоритм.
Данным требованиям отвечает модифицированное дискретнокосинусное преобразование (МДКП), которое является преобразованием Фурье и основывается на дискретном косинусном преобразовании (ДКП-IV). МДКП — преобразование с перекрытием, выполняется на последовательных блоках объемных наборов данных, каждый из последующих блоков перекрывается. Это происходит следующим образом: вторая половина предыдущего блока совпадает с первой половиной следующего. Такое перекрытие (в дополнение к функциям дискретно-косинусного преобразования) делает МДКП особенно полезным для сжатия сигналов тех приложений, где необходимо избежать появления артефактов, которые обычно выходят за границы блоков. В кодировании подобный артефакт — это появление в данных закономерностей, в частности лишних шумов при сжатии с потерями, отсутствующих в исходных данных. МДКП работает в форматах MP3, АС-3, Vorbis и ААС для сжатия аудиоданных.
Уменьшить скорость цифрового потока позволяют методы кодирования, учитывающие статистику звуковых сигналов, например вероятности появления уровней разной величины. Одним из таких методов является код Хаффмана, где наиболее вероятным значениям сигнала приписываются более короткие кодовые слова, а значения отсчетов, вероятность появления которых мала, кодируются кодовыми словами большей длины. Именно в силу этих двух причин в наиболее эффективных алгоритмах компрессии цифровых аудиоданных кодированию подвергаются не сами отсчеты звукового сигнала, а коэффициенты мдкп.
Подобные методы применяют при архивации файлов.
Сжатие аудиоданных с потерями основывается на несовершенстве человеческого слуха при восприятии звуковой информации. Неспособность человека в определенных случаях различать тихие звуки в присутствии более громких, называемая эффектом маскировки, была использована в алгоритмах сокращения психоакустической избыточности. Обобщенная структура кодера звукового сигнала с компрессией цифровых аудиоданных представлена на рисунке 2.22.
Рис. 2.22. Структура кодера сжатия аудиоданных с потерями (ИК.М — импульсно-кодовая модуляция)
Эффекты слухового маскирования зависят от спектральных и временных характеристик маскируемого и маскирующего сигналов и могут быть разделены на две основные группы:
- • частотное (одновременное) маскирование;
- • временное (неодновременное) маскирование.
Эффект маскирования в частотной области связан с тем, что в присутствии больших звуковых амплитуд человеческое ухо нечувствительно к малым амплитудам близких частот. Когда два сигнала одновременно находятся в ограниченной частотной области, то более слабый сигнал становится неслышимым на фоне более сильного.
Маскирование во временной области характеризует динамические свойства слуха, показывая изменение во времени относительного порога слышимости (порог слышимости одного сигнала в присутствии другого), когда маскирующий и маскируемый сигналы звучат не одновременно. При этом следует различать явления послемаскировки (изменение порога слышимости после сигнала высокого уровня) и предмаскировки (изменение порога слышимости перед приходом сигнала максимального уровня). Более слабый сигнал становится неслышимым за 5—20 мс до включения сигнала маскирования и слышимым через 50—200 мс после его включения.
Наилучшим методом кодирования звука, учитывающим эффект маскирования, является полосное кодирование. При этом группа отсчетов входного звукового сигнала, называемая кадром, поступает на блок фильтров, который разделяет сигнал на частотные поддиапазоны. На выходе каждого фильтра оказывается та часть входного сигнала, которая попадает в полосу пропускания данного фильтра. Затем в каждой полосе с помощью психоакустической модели анализируется спектральный состав сигнала и оценивается, какую часть сигнала следует передавать без сокращений, а какая располагается ниже порога маскирования и может быть переквантована на меньшее число бит.
Для сокращения максимального динамического диапазона определяют максимальный отсчет в кадре и вычисляют масштабирующий множитель, который приводит этот отсчет к верхнему уровню квантования. Данная операция аналогична компандированию в аналоговом вещании. Масштабирующий множитель передается к декодеру вместе с кодированными данными для коррекции коэффициента передачи последнего. После масштабирования производится оценка порога маскирования и осуществляется перераспределение общего числа бит между всеми полосами.
После устранения психоакустической избыточности звуковых сигналов их точное восстановление при декодировании уже невозможно. Методами устранения психофизической избыточности можно обеспечить сжатие цифровых аудиоданных в 10—12 раз без существенных потерь в качестве.
Звуковые редакторы. Такие редакторы позволяют не только записывать и воспроизводить звук, но и редактировать его.
Оцифрованный звук представляется в звуковых редакторах в наглядной форме, поэтому операции копирования, перемещения и удаления частей звуковой дорожки можно легко осуществлять с помощью мыши. Кроме того, можно накладывать звуковые дорожки друг на друга (микшировать звуки) и применять различные акустические эффекты (эхо, воспроизведение в обратном направлении и др.).
Звуковые редакторы позволяют менять качество цифрового звука и объем звукового файла путем изменения частоты дискретизации и глубины кодирования. Оцифрованный звук можно сохранять без сжатия в звуковых файлах в универсальном формате WAV или в форматах со сжатием FLAC, MP3, ААС и др.
При сохранении звука в форматах со сжатием в одном из вариантов отбрасываются «избыточные» для человеческого восприятия звуковые частоты с малой интенсивностью, совпадающие по времени со звуковыми частотами с большой интенсивностью. Применение такого формата позволяет сжимать звуковые файлы в десятки раз, однако приводит к необратимой потере информации (файлы не могут быть восстановлены в первоначальном виде).