Двоичное кодирование информации

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

Кодирование текстовых данных. Если каждому символу алфавита сопоставить определенное целое число (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию. Восьми двоичных разрядов достаточно для кодирования 256 различных символов. Этого хватит, чтобы выразить различными комбинациями восьми битов все символы английского и русского языков, как строчные, так и прописные, а также знаки препинания, символы основных арифметических действий и некоторые общепринятые специальные символы, например символ «§».

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

Для английского языка, захватившего де-факто нишу международного средства общения, противоречия уже сняты. Институт стандартизации США (ANSI—American National Standard Institute) ввел в действие систему кодирования ASCII (American Standard Code for Information Interchange — стандартный код информационного обмена США). В системе ASCII закреплены две таблицы кодирования — базовая и расширенная. Базовая таблица закрепляет значения кодов от 0 до 127, а расширенная относится к символам с номерами от 128 до 255.

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

Начиная с кода 32 по код 127 размещены коды символов английского алфавита, знаков препинания, цифр, арифметических действий и некоторых вспомогательных символов.

Аналогичные системы кодирования текстовых данных были разработаны и в других странах. Так, например, в СССР в этой области действовала система кодирования КОИ-7 (код обмена информацией, семизначный). Однако поддержка производителей оборудования и программ вывела американский код ASCII на уровень международного стандарта, и национальным системам кодирования пришлось «отступить» во вторую, расширенную часть системы кодирования, определяющую значения кодов со 128 по 255. Отсутствие единого стандарта в этой области привело к множественности одновременно действующих кодировок. Только в России можно указать три действующих стандарта кодировки и еще два устаревших.

Так, например, кодировка символов русского языка, известная как кодировка Windows-1251, была введена «извне» — компанией Microsoft, но, учитывая широкое распространение операционных систем и других продуктов этой компании в России, она глубоко закрепилась и нашла широкое распространение. Эта кодировка используется на большинстве локальных компьютеров, работающих на платформе Windows.

Другая распространенная кодировка носит название КОИ-8 (код обмена информацией, восьмизначный). Сегодня кодировка КОИ-8 имеет широкое распространение в компьютерных сетях на территории России и в российском секторе интернета.

Международный стандарт, в котором предусмотрена кодировка символов русского алфавита, носит название кодировки ISO (International Standard Organization — Международный институт стандартизации). На практике данная кодировка используется реже.

На компьютерах, работающих в операционных системах MS-DOS, могут действовать еще две кодировки (кодировка ГОСТ икодировка ГОСТ-альтернативная). Первая из них считалась устаревшей даже в первые годы появления персональной вычислительной техники, но вторая используется и по сей день.

В связи с изобилием систем кодирования текстовых данных, действующих в России, возникает задача межсистемного преобразования данных — это одна из распространенных задач информатики.

Универсальная система кодирования текстовых данных.Трудности, связанные с созданием единой системы кодирования текстовых данных вызваны ограниченным набором кодов (256). Если кодировать символы не восьмиразрядными двоичными числами, а числами с большим количеством разрядов, то и диапазон возможных значений кодов станет намного больше. Такая система, основанная на 16-разрядном кодировании символов, получила название универсальной — UNICODE. Шестнадцать разрядов позволяют обеспечить уникальные коды для 65 536 различных символов — этого поля достаточно для размещения в одной таблице символов большинства языков планеты.

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

Кодирование графической информации. В последнее время стала очень широко использоваться компьютерная графика: в компьютерном моделировании, науч­ных исследованиях, компьютерных тренажерах, компьютерной анимации, деловой графике, играх и т. д.

На экране дисплея растровая графика представляется в виде изображения, состоящего из точек (пикселей).

Для черно-белого (двухцветного) изображения информационный объем одной точки равен одному биту (либо черная — 1, либо белая — 0).

       
       
       
       

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

Для кодирования цветных графических изображений применяется принцип декомпозиции произвольного цвета на основные составляющие. В качестве таких составляющих используют три основные цвета: красный (Red, К), зеленый (Green, G) и синий (Blue, В). На практике считается (хотя теоретически это не совсем так), что любой цвет, видимый человеческим глазом, можно получить путем механического смешения этих трех основных цветов. Такая система кодирования называется системой RGB по первым буквам названий основных цветов.

Если для кодирования яркости каждой из основных составляющих использовать по 256 значений (восемь двоичных разрядов), как это принято для полутоновых черно-белых изображений, то на кодирование цвета одной точки надо затратить 24 разряда. При этом система кодирования обеспечивает однозначное определение 16,5 млн. различных цветов, что на самом деле близко к чувствительности человеческого глаза. Режим представления цветной графики с использованием 24 двоичных разрядов называется полноцветным (True Color).

Каждому из основных цветов можно поставить в соответствие дополнительный цвет, то есть цвет, дополняющий основной цвет до белого. Нетрудно заметить, что для любого из основных цветов дополнительным будет цвет, образованный суммой пары остальных основных цветов. Соответственно, дополнительными цветами являются: голубой (Cyan, С), пурпурный (Magenta, M) и желтый (Yellow, У). Принцип декомпозиции произвольного цвета на составляющие компоненты можно применять не только для основных цветов, но и для дополнительных, то есть любой цвет можно представить в виде суммы голубой, пурпурной и желтой составляющей. Такой метод кодирования цвета принят в полиграфии, но в полиграфии используется еще и четвертая краска — черная (Black, К). Поэтому данная система кодирования обозначается четырьмя буквами CMYK (черный цвет обозначается буквой К, потому, что буква В уже занята синим цветом), и для представления цветной графики в этой системе надо иметь 32 двоичных разряда. Такой режим тоже называется полноцветным (True Color).

Если уменьшить количество двоичных разрядов, используемых для кодирования цвета каждой точки, то можно сократить объем данных, но при этом диапазон кодируемых цветов заметно сокращается. Кодирование цветной графики 16-разрядными двоичными числами называется режимом High Color.

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

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

Метод FM (Frequency Modulation) основан на том, что теоретически любой сложный звук можно разложить на последовательность простейших гармонических сигналов разных частот, каждый из которых представляет собой правильную синусоиду, а следовательно, может быть описан числовыми параметрами, то есть кодом. В природе звуковые сигналы имеют непрерывный спектр, то есть являются аналоговыми. Их разложение в гармонические ряды и представление в виде дискретных цифровых сигналов выполняют специальные устройства — аналогово-цифровые преобразователи (АЦП). Обратное преобразование для воспроизведения звука, закодированного числовым кодом, выполняют цифро-аналоговые преобразователи (ДАЛ). При таких преобразованиях неизбежны потери информации, связанные с методом кодирования, поэтому качество звукозаписи обычно получается не вполне удовлетворительным и соответствует качеству звучания простейших электромузыкальных инструментов с окрасом, характерным для электронной музыки. В то же время данный метод кодирования обеспечивает весьма компактный код, и потому он нашел применение еще в те годы, когда ресурсы средств вычислительной техники были явно недостаточны.

Метод таблично-волнового ( Wave-Table) синтеза лучше соответствует современному уровню развития техники. Если говорить упрощенно, то можно сказать, что где-то в заранее подготовленных таблицах хранятся образцы звуков для множества различных музыкальных инструментов (хотя не только для них). В технике такие образцы называют «сэмплами». Числовые коды выражают тип инструмента, номер его модели, высоту тона, продолжительность и интенсивность звука, динамику его изменения, некоторые параметры среды, в которой происходит звучание, а также прочие параметры, характеризующие особенности звука. Поскольку в качестве образцов используются «реальные» звуки, то качество звука, полученного в результате синтеза, получается очень высоким и приближается к качеству звучания реальных музыкальных инструментов.

Системы счисления

Системой счисления называется совокупность символов (цифр) и правил их использования для представления чисел» Существует два вида систем счисления:

Непозиционные системы счисления. Примером этой системы счисления является Римская система, в которой в качестве цифр используются некоторые буквы: I(1), V(5),Х(10), L(50), С(100), D(500), М(100О). Значение цифры не зависит от ее положения в числе. Например, в числе XXX цифра X встречается трижды, и в каждом случае обозначает одну и ту же величину 10, а в сумме XXX — 30.

Позиционные системы счисления. В позиционной системе счисления количественное значение цифры зависит от ее позиции в числе. Позиция цифры называется разрядом. Разряд числа возрастает справа налево. В позиционной системе счисления основание системы равно количеству цифр, используемых ею, и определяет, во сколько раз различаются значения цифр соседних разрядов чисел. Любое число, записанное в позиционной системе счисления с произвольным основанием, можно записать в виде полинома (многочлена):

Двоичное кодирование информации - student2.ru

где S — основание системы счисления, а степень соответствует разряду цифры а в числе A(S).

Приведем пример записи числа в десятичной системе счисления:

34510 = 3*102 + 4*101 + 5*100

45910 = 400 + 50 + 9 = 4*102 + 5*101 + 9*100

Если число имеет дробную часть, то добавляется сумма оснований 10 с отрицательными степенями. Например:

321,40910 = 3*102 + 2*101 + 1*100 + 4*10-1 + 0*10-2 + 9*10-3.

Перевод чисел в десятичную систему из системы счисления с произвольным основанием.Для того чтобы перевести число в десятичную систему счисления, запишем его в виде известного нам полинома:

Двоичное кодирование информации - student2.ru

и вычислим его значение.

Например: переведем двоичное число 1111012 в десятичную систему счисления:

1111012 = 1*25 + 1*24 + 1*23 + 1*22 + 0*21 + 1*20 =

= 32+16+8+4+1=6110.

Аналогично можно осуществить перевод и троичного числа 2213 в десятичную систему счисления:

2213 = 2*32+ 2*3' + 1*3° = 18 + 6 + 1 = 2510.

Перевод из десятичной системы счисления в систему счисления с произвольным основанием.Существует несколько способов перевода чисел из десятичной системы счисления в систему счисления с произвольным основанием.

Рассмотрим первый способ. Для перевода нужно представить исходное число в виде полинома:

Двоичное кодирование информации - student2.ru взяв в качестве S основание той системы счисления, в которую данное число нужно перевести. Затем выпишем коэффициенты аn — аm , которые и составят нужную цифру.

Например: переведем число 1310 в систему счисления с основанием 2. Для этого представим 13 как сумму степеней числа 2:

1310 = 8 + 4 + 1 .

Воспользуемся формулой

Двоичное кодирование информации - student2.ru

и запишем число 13 в виде полинома

1310 = 1*23 + 1*22 + 0*21 +1*20

Теперь выпишем все коэффициенты аn — а0: 1101

Таким образом, десятичное число 1310 в двоичной системе счисления будет записано как 11012.

Аналогично можно осуществить перевод этого числа, и в другую, например, троичную систему счисления:

1310 = 9 + 3 + 1 = 1*32 + 1*31 + 1*30 = 1113

Можно воспользоваться и другим способом: будем делить число 13 последовательно на 2 нацело, и записывать остатки, в том числе и нулевые:

13 : 2 = 6 остаток 1

6 : 2 = 3 0

3 : 2 = 1 1

Результат последнего деления на 2 уже не делится, и эта цифра будет старшей цифрой нашего числа. Выписав все остатки, начиная с последнего, получим двоичное представление числа:

1310=11012.

Обычно этот способ используют для представления больших чисел. Например, нужно перевести в двоичную систему счисления число 23410 ,

234 : 2 = 117 остаток 0

117 : 2 = 57 1

58 : 2 = 29 0

29 : 2 = 14 1

14 : 2 = 7 0

7 : 2 = 3 1

3 : 2 = 1 1

Выписываем остатки, начиная с результата последнего деления:

23410 = 111010102

Аналогичным образом можно любое десятичное число перевести в систему с любым основанием. Например, переведем десятичное число 25 в систему счисления с основанием 3:

25 : 3 = 8 остаток I

8 : 3 = 2 2

Результат:

2510 = 2213

Перевод правильных десятичных дробей в систему счисления с произвольным основанием выполняют по следующему правилу: дробь умножить на число, равное основа­нию системы счисления, в которую переводим число, и отделить целую часть. Умножение нужно производить до тех пор, пока дробная часть не станет равной нулю.

Например, переведем число 0,2510 в двоичную систему счисления:

0,25 * 2 = 0,5 целая часть равна 0

0,5 * 2 = 1

0,2510 = 0,012

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

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10 (0 и единица переноса в старший раз ряд).

Например, сложим самые простые числа 12 и 12:

+ 0001

Двоичное кодирование информации - student2.ru 0001

Теперь сложим 72 и 42

0111 + 0100 = 1011

Сложим 92 и 32

1001 + 0011 = 1100

Вычитать двоичные числа можно также поразрядно по следующим правилам:

0 - 0 = 0

10 - 1 = 1

1 – 0 = 1

1 – 1 = 0

Выполняя вычитание из ноля единицы, следует занять единицу из старшего значащего разряда.

_ 100

Двоичное кодирование информации - student2.ru 001

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

Чтобы получить из числа 2 число минус 2, нужно выполнить следующие преобразования

1) 00000010 — число 2;

2) 11111101 — заменив нули единицами, а единицы нулями, получим инвертированное число 2;

3) 11111101 — прибавим к инверсному коду числа единицу

+ 00000001;

4) 11111110 — получим дополнительный код двоичного числа минус 2.

Сложив полученный дополнительный код числа с уменьшаемым, можно получить разность двоичных чисел. Если найти дополнительный код отрицательного числа, то получим противоположное ему положительное число.

Восьмеричная и шестнадцатеричная системы счисления.Основной недостаток двоичной системы состоит в том, что для записи даже не очень больших чисел приходится использовать много знаков, поскольку основание системы счисления мало. Поэтому в современных компьютерах помимо двоичной системы счисления применяют и другие, более компактные по длине чисел системы, такие, как восьмеричная и шестнадцатеричная.

В восьмеричной системе 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7.

Число восемь обозначается 10 (один и ноль), 6410— не что иное, как 1008.

Перевод чисел из восьмеричной системы счисления в десятичную, и обратно можно осуществить по уже известным правилам.

Например, переведем число 6118 в десятичную систему:

6118 =6*82 + 1*81 + 1*80 = 6*6410 + 1*810 +1 = 39310.

Теперь переведем число 6118 в двоичную систему. Для этого нужно заменить каждую цифру восьмеричного числа группой из трех двоичных цифр. В нашем числе 6118 заменим цифру 6 группой 110, а каждую 1 — 001 и получим:

6118= 110 001 0012

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

I1111010012 = 011 111 101 0012 = 37518.

Запись числа еще компактнее в шестнадцатеричной системе. Так как цифр мы знаем всего десять, то для за­писи шестнадцатеричных цифр больших 9 используют первые буквы латинского алфавита. Перевод из шестнадцатеричной системы счисления в двоичную и обратно аналогичен переводу из восьмеричной и обратно. Разница только в том, что шестнадцатеричные цифры заменяются группами по четыре двоичные цифры. Например,

A0F16 = 1010 0000 11112.

11111010012 = 0011 1110 10012 = 3Е916.

Наши рекомендации