тема этого урока универсальностьдвоичного кодирования равномерное инеравномерное кодына прошлом уроке мы узнали что дляудобства хранения и передачи информациии и часто переводят из непрерывной формыв дискретную такой процесс называетсядискретизациив процессе дискретизации информациязаписывается на одном из языковалфавитом языка называют всесуществующие символы которыеиспользуются для представленияинформации на этом языке алфавитхарактеризуется своей мощностью этоколичество символов которые в неговходятдвоичный алфавит состоит из двухсимволов запись информации с помощьютакого алфавитаназывается двоичным кодированиемдвоичный код это кот информацииполучившийся в результате ее двоичногокодирования также мы узнали что любойалфавит можно привести к двоичномусегодня мы узнаем как происходитдвоичное кодирование звука и изображениячто такое равномерный и неравномернойкоды еще мы изучим двоичное кодированиетекстовых сообщений методом хоффманаитак на прошлом уроке мы узнали чтолюбой алфавит можно представить в видедвоичногодля этого каждому символу исходномуалфавита присваивается его двоичный кодзаписывая подряд двоичные коды всехсимволов мы можем кодироватьтекстовые сообщения еще мы узнали чтодвоичный алфавит легко реализоватьтехническис помощью наличия или отсутствияэлектрического сигнала на некоторомучастке электрической цепи именнопоэтому любая информация на компьютерепредставлена в виде двоичного кодаоднако мы знаем что на компьютере можетхранитьсялюбая информация они только текстоваяили числоваякак же ее представить в виде двоичногокода например звук и изображениекак мы знаем они представляются в виденепрерывных сигналов разберем как жепредставить эти два вида информации вдискретной форменачнём с изображения вполне логично чтолюбое изображение можно разделить нанекоторые участки каждый из которыхимеет свой цветименно так происходит при представленииизображений на компьютере изображениеразбивается на маленькие фрагментыкоторые можно назватьточками каждое изображение имеет своеразрешениеоно состоит из двух цифр которыеразделяются крестиком или двоеточиечисло слева означает на сколько точекделится изображения по горизонтали асправа насколько по вертикалитаким образом изображение на компьютерепредставляется в виде последовательноститочек каждый из которых имеет свой цветто есть изображения на компьютере можнопредставить последовательно записавцвета всех точек которые в него входятно как же представить цвет в видедвоичных кодовлюбой цвет на мониторе компьютераизображается смешиванием в разныхколичествах трёх основных цветовкрасного зеленого и синеготакое представление цветов называется ихart baby моделью по первым буквамназваний основных цветов на английскомязыке то естьred green ебнутак как остальные цвета это смеси трёхосновных цветов в разных количествахих можно представить в виде трех чиселколичеств основных цветовэти числа можно заменить двоичнымикодамиодинаковые разрядности записав эти кодыпоследовательно мы получим двоичный кодцвета точкитаким образом изображение на компьютерепредставляется в виде списка двоичныхкодов одинаковые разрядностикаждый из которых обозначает цвет однойиз точек изображениянемного иначе происходит двоичноекодирование звука позжеиз курса физики вы узнаете что любойзвук можно представить в виденепрерывной волны эту волну можноописать зависимостью и и амплитуды тоесть громкости звука от времени такуюзависимостьлегко изобразить в виде графикачтобы представить звук в виде дискретныхсигналов время в течение которогопродолжается звук делится на равныенебольшие промежутки и на каждом изпромежутков зановоопределяется амплитуда волны то естьгромкость звукато есть звук можно представить в видесписка чисел каждый из которых означаетамплитуду волны в течение небольшогопромежутка времениэти числа можно представить в видедвоичных кодов с одинаковым количествомразрядовтаким образом звук на компьютерепредставляется в виде списка двоичныхкодов одинаковые разрядности каждый изкоторых обозначает амплитуду звуковойволны на некотором небольшом промежуткевременимы знаем что с помощью двоичногокодирования в виде последовательностейединиц и нулейможно представить любую информацию наестественном или формальном языке в томчислеизображение и звукто есть информацию любой формы можнопредставить в виде двоичного кода чтоозначает универсальность двоичногокодирования это и есть его главноепреимущество главный недостатокдвоичного кодированияэто большой размер двоичного кода такпри кодировании текстового сообщенияодному символу текста можетсоответствовать несколько символовдвоичного кодадавайте подумаем как можно уменьшитьразмер двоичного кода и вообще любогокодадо этого все двоичные коды которые мырассматривали были равномернымиравномерным называется код которыйсостоит из равных по количеству разрядовкодовых комбинацийтак например при кодировании алфавитадля каждой буквы мы использовалидвоичные коды с одинаковым количествомразрядоводнако не все символы алфавита втекстовом сообщении встречаютсяодинаково частопоэтому для того чтобы сократить длинудвоичного кода мы можем присвоитьразным сигналом коды разной длиныкоды с меньше разрядностью можноприсвоить сигналом которые сообщениявстречаются чаще а коды с большейразрядностью сигналом которыевстречаются в сообщении реже такой кодназывается неравномерным то есть онсостоит из комбинацийразной длиныпример неравномерного кода азбука морзев ней разным буквам алфавитасоответствует разное количество сигналовдлинных и короткихнапример русская буква а обозначаетсявсего двумя сигналами одним коротким иодним длинным а ъ кодируются питьюсигналами двумя длиннымиодним коротким и двумя длиннымирассмотрим один из методовнеравномерного кодирования текстовыхсообщенийон называется методом хоффмана посмотримкак работает этот метод закодировал сего помощью сообщения мама мыла рамусначала выпишем все символы алфавитакоторые используются в сообщениив данном сообщении используются символым.а.пробел л.р.и узатем нужно записать как часто всообщении встречается каждый из символовбуквы м и а повторяются по четыре разапробел повторяется дважды буквы и л.р. иу в сообщении встречаются по одному разузатем символы сообщения записываются впорядке убывания частоты появления у насони так и записанытеперь строится дерево частоты появлениясимволов в сообщении в начале берутсядва символа которые встречаются всообщении реже всех у нас таких символов4 возьмем два правыхбуквы r и усоединяем их линий и складываем ихчастоту появления в сообщенииодин плюс один равно двумтеперь повторим то же действие реже всеху нас появлялись буквыбылсоединим их линиями сложив частотупоявления получим 2теперь снова смотрим где у нас самаямаленькая частота появления таких частоту нас три пробел появляется дваждыдвум равны общее частоты появлениясимволов ии л и символов р и увозьмем две правые чистоты и объединимихих суммарная частота равна 4снова ищем минимальные частоты появлениявозьмем две правые чистоты и объединимихих сумма равна 6теперь объединим две левые чистотыих сумма равна 8объединим две оставшиеся чистотыих сумма равна 14именно 14 равна длина кодируем agoсообщениятеперь двигаясь сверху вниз присвоимветвям дерева значение нулей и единиц последующим правиламветви с большей частотой будемприсваиватьединицу а ветви с меньшей частотой0так левой ветви верхнего узла присвоимединицуа правый 0затем рассмотрим левый узелтам две частоты равны поэтому левойветви присвоим 0 оправой единицурассмотрим узел частота которого равна 6частота появления пробела меньшесуммарной частоты правой ветви поэтомулевой ветви присвоим 0 а правой ветвиединицу по такому же принципупронумеруем оставшиеся ветви дереватеперь двигаясь по получившемуся деревусверху вниз мы можем записать двоичныйкод каждого символатак у буквы м будет код 10у буквы а 11 у пробела два нуля и такдалеетеперь нам остается лишь заменить всесимволы в сообщении их двоичными кодамив итоге двоичный код нашего сообщениябудет такимвсего в нем 36 разрядову некоторых из вас может возникнутьвопрос а как же расшифровать данноесообщениеведь в отличие от равномерного кода мыне знаем точно сколько разрядов занимаеткаждый символпри неравномерном кодирование достаточночтобы кот никакогои символов не начинался skoda другогосимволадавайте попробуем расшифровать первыесимволы нашего сообщенияитак сообщение начинается с единицы сединицы у нас начинаются двоичные кодыбукв m&aпосмотрев на следующий символ 0 мы можемточно определить что первый символэто буква мпо такому же принципу мы можемопределить что следующий символбуква а и до конца расшифровать словомамаследующая цифра 0 с нуля у насначинаются коды 5 символов после негоидет также 0 с двух нулей у насначинается код пробеладалее идет буква мследующая цифра 0 с нуля у насначинаются коды 5 символов возьмемследующую цифрус нуля и единицы начинаются кодычетырех символовследующая цифра 0с нуля единицы и нуля начинаются кодыдвух символовследующий символ снова 0 и мы можемоднозначно определить что это буква итакже расшифровывается и остальноесообщениедавайте посмотрим двоичный код изскольких разрядов получился бы прииспользовании равномерного двоичногокодированиякак мы помним сообщение записано спомощью алфавитамощностью 7 символовопределим разрядность двоичного коданеобходимую для кодирования одногосимвола такого алфавитакак мы помним для этого необходимоопределить в какую степень возвестицифру 2 чтобы получить 7но цифру 7 мы так получить не можемпоэтому результат необходимо округлить вбольшую сторонумы можем так получить 8для этого двойку нужно возвести в третьюстепень то есть для кодирования одногосимвола нам потребуется 3 разрядныйдвоичный кодопределим какой код потребуется длякодирования всего сообщения для этогонужно разрядность кода одного символато есть 3 умножить на длину всегосообщения то есть 14 символов3 умноженное на 14 равно 42то есть при кодировании сообщения нампотребовался бы 42 разрядный равномерныйдвоичный кодпри использовании неравномерного коданам потребовалось всего 36 разрядов тоесть на 6 разрядов меньшесокращение длины двоичного кода заметнодаже при небольшой длине сообщения еслидлина сообщения будет больше напримердесятки тысяч символов разница междудлинными равномерного и неравномерногокода тоже увеличитсякогда длина двоичного кода составляетмиллиарды разрядов разница междуравномерным и неравномерным кодом простоогромнасегодня мы рассмотрели универсальностьдвоичного кодированияравномерное и неравномерное кодымы узнали что универсальность двоичногокодирования означает что его можноприменять для кодирования информации налюбом формальном или не формальном языкеа также изображений и звукавыяснили что все коды можно разделить наравномерное и неравномерное гдеравномерный код состоит из комбинацииравной длины а неравномерный код состоитиз комбинаций разной длиныопытным путем мы подтвердили чтоиспользование неравномерного кодированияпозволяет сократить длину кода