двоичное кодирование числовых данных
Двоичное кодирование.
в Компьютеры 23.03.2020 0 184 Просмотров
Двоичное кодирование – это тип кода, используемый в основном для программирования компьютеров на самом базовом уровне. Он состоит из системы единиц и нулей, предназначенной для представления «истинного» или «ложного» значения в логических операциях. Двоичное кодирование было разработано Клодом Шеннаном в 1930-х годах с использованием переключателей.
Двоичные данные – это необработанные данные, которые используются почти на всех компьютерах, но большинство пользователей компьютеров не взаимодействуют с ними напрямую. Компьютер читает двоичный код и переводит его в данные, полезные для пользователя. Коды хранятся по-разному в зависимости от типа объекта. Например, коды могут храниться по напряжению, просто обозначая, включен ли объект, имеет ли он напряжение или выключен. CD-ROM используют темные пятна на блестящей поверхности для обозначения «истинных» или «ложных» значений, жёсткие диски используют магнетизм, а память использует электрический заряд.
Двоичное кодирование опирается на биты, наименьшую единицу кодирования. Подобно переключателю, который может быть либо выключен, либо включен, бит может иметь значение либо один, либо ноль. Более знакомые единицы обработки получены из бита. Байт составляет восемь битов, килобайт имеет 1000 байтов, а мегабайт имеет 1000 килобайт. Чем больше число битов, тем больше комбинаций может быть в битах, тем больше информации можно сохранить.
Например, два бита имеют четыре состояния. Оба могут быть выключены, оба могут быть включены, или один может быть выключен, и один может быть включен. В двоичном виде эти комбинации записываются как 00, 01, 10, 11. Количество состояний группы битов можно найти по выражению 2n, где n – количество битов.
Поскольку для каждого бита есть только два значения, с ними проще работать, чем с другими процессами компьютерного кодирования. Группы битов используются для представления различной информации. Байт часто представляет буквенный символ. Например, буква «А», записанная в двоичном виде – «01000001».
Хотя чаще всего используется для программирования компьютеров, двоичное кодирование также используется в генетических алгоритмах для определения пересечения наследственности между родителями и потомками. Биты назначаются каждому родителю для представления части их генетического кода. Затем случайные или конкретные биты копируются или инвертируются для получения кода потомства.
Кодирование для чайников, ч.1
Не являясь специалистом в обозначенной области я, тем не менее, прочитал много специализированной литературы для знакомства с предметом и прорываясь через тернии к звёздам набил, на начальных этапах, немало шишек. При всём изобилии информации мне не удалось найти простые статьи о кодировании как таковом, вне рамок специальной литературы (так сказать без формул и с картинками).
Статья, в первой части, является ликбезом по кодированию как таковому с примерами манипуляций с битовыми кодами, а во второй я бы хотел затронуть простейшие способы кодирования изображений.
0. Начало
Давайте рассмотрим некоторые более подробно.
1.1 Речь, мимика, жесты
1.2 Чередующиеся сигналы
В примитивном виде кодирование чередующимися сигналами используется человечеством очень давно. В предыдущем разделе мы сказали про дым и огонь. Если между наблюдателем и источником огня ставить и убирать препятствие, то наблюдателю будет казаться, что он видит чередующиеся сигналы «включено/выключено». Меняя частоту таких включений мы можем выработать последовательность кодов, которая будет однозначно трактоваться принимающей стороной.
1.3 Контекст
2. Кодирование текста
Текст в компьютере является частью 256 символов, для каждого отводится один байт и в качестве кода могут быть использованы значения от 0 до 255. Так как данные в ПК представлены в двоичной системе счисления, то один байт (в значении ноль) равен записи 00000000, а 255 как 11111111. Чтение такого представления числа происходит справа налево, то есть один будет записано как 00000001.
Итак, символов английского алфавита 26 для верхнего и 26 для нижнего регистра, 10 цифр. Так же есть знаки препинания и другие символы, но для экспериментов мы будем использовать только прописные буквы (верхний регистр) и пробел.
Тестовая фраза «ЕХАЛ ГРЕКА ЧЕРЕЗ РЕКУ ВИДИТ ГРЕКА В РЕЧКЕ РАК СУНУЛ ГРЕКА РУКУ В РЕКУ РАК ЗА РУКУ ГРЕКУ ЦАП».
2.1 Блочное кодирование
Информация в ПК уже представлена в виде блоков по 8 бит, но мы, зная контекст, попробуем представить её в виде блоков меньшего размера. Для этого нам нужно собрать информацию о представленных символах и, на будущее, сразу подсчитаем частоту использования каждого символа:
3.2. Кодирование данных двоичным кодом
Для автоматизации работы с данными, относящимися к различным типам, очень важно унифицировать их форму представления — для этого обычно используется прием кодирования, то есть выражение данных одного типа через данные другого типа. Естественные человеческие языки — это не что иное, как системы кодирования понятий для выражения мыслей посредством речи. К языкам близко примыкают азбуки (системы кодирования компонентов языка с помощью графических символов). История знает интересные, хотя и безуспешные попытки создания «универсальных» языков и азбук. По-видимому, безуспешность попыток их внедрения связана с тем, что национальные и социальные образования естественным образом понимают, что изменение системы кодирования общественных данных непременно приводит к изменению общественных методов (то есть норм права и морали), а это может быть связано с социальными потрясениями.
Та же проблема универсального средства кодирования достаточно успешно реализуется в отдельных отраслях техники, науки и культуры. В качестве примеров можно привести систему записи математических выражений, телеграфную азбуку, морскую флажковую азбуку, систему Брайля для слепых и многое другое.
Своя система существует и в вычислительной технике — она называется двоичным кодированием и основана на представлении данных последовательностью всего двух знаков: 0 и 1. Эти знаки называются двоичными цифрами, по-английски — binary digit или сокращенно hit (бит).
Одним битом могут быть выражены два понятия: 0 или 1 (да или нет, черное или белое, истина или ложь и т. п.). Если количество битов увеличить до двух, то уже можно выразить четыре различных понятия:
Тремя битами можно закодировать восемь различных значений:
000 001 010 011 100 101 110 111
Увеличивая на единицу количество разрядов в системе двоичного кодирования, мы увеличиваем в два раза количество значений, которое может быть выражено в данной системе, то есть общая формула имеет вид:
где N— количество независимых кодируемых значений;
т — разрядность двоичного кодирования, принятая в данной системе.
Кодирование целых и действительных чисел
Целые числа кодируются двоичным кодом достаточно просто — достаточно взять целое число и делить его пополам до тех пор, пока частное не будет равно единице. Совокупность остатков от каждого деления, записанная справа налево вместе с последним частным, и образует двоичный аналог десятичного числа.
Таким образом, 19= 10011;.
Для кодирования целых чисел от 0 до 255 достаточно иметь 8 разрядов двоичного кода (8 бит). Шестнадцать бит позволяют закодировать целые числа от 0 до 65 535, а 24 бита — уже более 16,5 миллионов разных значений.
Для кодирования действительных чисел используют 80-разрядное кодирование. При этом число предварительно преобразуется в нормализованную форму:
123 456 789 = 0,123456789 • 10 10
Первая часть числа называется мантиссой, а вторая — характеристикой. Большую часть из 80 бит отводят для хранения мантиссы (вместе со знаком) и некоторое фиксированное количество разрядов отводят для хранения характеристики (тоже со знаком).
Кодирование текстовых данных
Если каждому символу алфавита сопоставить определенное целое число (например, порядковый номер), то с помощью двоичного кода можно кодировать и текстовую информацию. Восьми двоичных разрядов достаточно для кодирования 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).
Рис. 1. Растр — это метод кодирования графической информации, издавна принятый в полиграфии
Поскольку линейные координаты и индивидуальные свойства каждой точки (яркость) можно выразить с помощью целых чисел, то можно сказать, что растровое кодирование позволяет использовать двоичный код для представления графических данных. Общепринятым на сегодняшний день считается представление черно-белых иллюстраций в виде комбинации точек с 256 градациями серого цвета, и, таким образом, для кодирования яркости любой точки обычно достаточно восьмиразрядного двоичного числа.
Для кодирования цветных графических изображений применяется принцип декомпозиции произвольного цвета на основные составляющие. В качестве таких составляющих используют три основные цвета: красный (Red, R), зеленый (Green, G) и синий (Blue, В). На практике считается (хотя теоретически это не совсем так), что любой цвет, видимый человеческим глазом, можно получить путем механического смешения этих трех основных цветов. Такая система кодирования называется системой RGB по первым буквам названий основных цветов.
Если для кодирования яркости каждой из основных составляющих использовать по 256 значений (восемь двоичных разрядов), как это принято для полутоновых черно-белых изображений, то на кодирование цвета одной точки надо затратить 24 разряда. При этом система, кодирования обеспечивает однозначное определение 16,5 млн различных цветов, что на самом деле близко к чувствительности человеческого глаза. Режим представления цветной графики с использованием 24 двоичных разрядов называется полноцветным (True Color).
Каждому из основных цветов можно поставить в соответствие дополнительный цвет, то есть цвет, дополняющий основной цвет до белого. Нетрудно заметить, что для любого из основных цветов дополнительным будет цвет, образованный суммой пары остальных основных цветов. Соответственно, дополнительными цветами являются: голубой (Cyan, С), пурпурный (Magenta, М) и желтый (Yellow, Y). Принцип декомпозиции произвольного цвета на составляющие компоненты можно применять не только для основных цветов, но и для дополнительных, то есть любой цвет можно представить в виде суммы голубой, пурпурной и желтой составляющей. Такой метод кодирования цвета принят в полиграфии, но в полиграфии используется еще и четвертая краска — черная (Black, К). Поэтому данная система кодирования обозначается четырьмя буквами CMYK (черный цвет обозначается буквой К, потому, что буква В уже занята синим цветом), и для представления цветной графики в этой системе надо иметь 32 двоичных разряда. Такой режим тоже называется полноцветным. (True Color).
Если уменьшить количество двоичных разрядов, используемых для кодирования цвета каждой точки, то можно сократить объем данных, но при этом диапазон кодируемых цветов заметно сокращается. Кодирование цветной графики 16-разрядными двоичными числами называется режимом High Color.
При кодировании информации о цвете с помощью восьми бит данных можно передать только 256 цветовых оттенков. Такой метод кодирования цвета называется индексным. Смысл названия в том, что, поскольку 256 значений совершенно недостаточно, чтобы передать весь диапазон цветов, доступный человеческому глазу, код каждой точки растра выражает не цвет сам по себе, а только его номер (индекс) в некоей справочной таблице, называемой палитрой. Разумеется, эта палитра должна прикладываться к графическим данным — без нее нельзя воспользоваться методами воспроизведения информации на экране или бумаге (то есть, воспользоваться, конечно, можно, но из-за неполноты данных полученная информация не будет адекватной: листва на деревьях может оказаться красной, а небо — зеленым).
Кодирование звуковой информации
Приемы и методы работы со звуковой информацией пришли в вычислительную технику наиболее поздно. К тому же, в отличие от числовых, текстовых и графических данных, у звукозаписей не было столь же длительной и проверенной истории кодирования. В итоге методы кодирования звуковой информации двоичным кодом далеки от стандартизации. Множество отдельных компаний разработали свои корпоративные стандарты, но если говорить обобщенно, то можно выделить два основных направления.
Метод FM (Frequency Modulation) основан на том, что теоретически любой сложный звук можно разложить на последовательность простейших гармонических сигналов разных частот, каждый из которых представляет собой правильную синусоиду, а следовательно, может быть описан числовыми параметрами, то есть кодом. В природе звуковые сигналы имеют непрерывный спектр, то есть являются аналоговыми. Их разложение в гармонические ряды и представление в виде дискретных цифровых сигналов выполняют специальные устройства — аналогово-иифровые преобразователи (АЦП). Обратное преобразование для воспроизведения звука, закодированного числовым кодом, выполняют цифра-аналоговые преобразователи (ЦАП). При таких преобразованиях неизбежны потери информации, связанные с методом кодирования, поэтому качество звукозаписи обычно получается не вполне удовлетворительным и соответствует качеству звучания простейших электромузыкальных инструментов с окрасом, характерным для электронной музыки. В то же время данный метод кодирования обеспечивает весьма компактный код, и потому он нашел применение еще в те годы, когда ресурсы средств вычислительной техники были явно недостаточны.
Метод таблично-волнового (Wave-Table) синтеза лучше соответствует современному уровню развития техники. Если говорить упрощенно, то можно сказать, что где-то в заранее подготовленных таблицах хранятся образцы звуков для множества различных музыкальных инструментов (хотя не только для них). В технике такие образцы называют сэмплами. Числовые коды выражают тип инструмента, номер его модели, высоту тона, продолжительность и интенсивность звука, динамику его изменения, некоторые параметры среды, в которой происходит звучание, а также прочие параметры, характеризующие особенности звука. Поскольку в качестве образцов используются «реальные» звуки, то качество звука, полученного в результате синтеза, получается очень высоким и приближается к качеству звучания реальных музыкальных инструментов.
Основные структуры данных
Работа с большими наборами данных автоматизируется проще, когда данные упорядочены, то есть образуют заданную структуру. Существует три основных типа структур данных: линейная, иерархическая и табличная. Их можно рассмотреть на примере обычной книги.
Если разобрать книгу на отдельные листы и перемешать их, книга потеряет свое назначение. Она по-прежнему будет представлять набор данных, но подобрать адекватный метод для получения из нее информации весьма непросто. (Еще хуже дело будет обстоять, если из книги вырезать каждую букву отдельно — в этом случае вряд ли вообще найдется адекватный метод для ее прочтения.)
Если же собрать все листы книги в правильной последовательности, мы получим простейшую структуру данных — линейную. Такую книгу уже можно читать, хотя для поиска нужных данных ее придется прочитать подряд, начиная с самого начала, что не всегда удобно.
Для быстрого поиска данных существует иерархическая структура. Так, например, книги разбивают на части, разделы, главы, параграфы и т, п. Элементы структуры более низкого уровня входят в элементы структуры более высокого уровня: разделы состоят из глав, главы из параграфов и т. д.
Для больших массивов поиск данных в иерархической структуре намного проще, чем в линейной, однако и здесь необходима навигация, связанная с необходимостью просмотра. На практике задачу упрощают тем, что в большинстве книг есть вспомогательная перекрестная таблица, связывающая элементы иерархической структуры с элементами линейной структуры, то есть связывающая разделы, главы и, параграфы с номерами страниц. В книгах с простой иерархической структурой, рассчитанных на последовательное чтение, эту таблицу принято называть оглавлением, а в книгах со сложной структурой, допускающей выборочное чтение, ее называют содержанием.
kpet-ks.ru
Компьютерные сети. г.Котово
Кодирование числовых,текстовых и графических данных данных
Кодирование числовых данных
Кодирование числовых данных по сути представляет собой перевод чисел, записанных в общепринятой десятичной системе счисления в двоичную систему счисления. В этом случае двоичную форму записи десятичного числа можно назвать его двоичным кодом. Всякое десятичное число прежде, чем оно попадает в память компьютера для обработки преобразуется в его двоичный эквивалент, а полученный результат прежде, чем появиться на экране видеотерминала или на бумаге после печати, переводится из двоичной системы счисления в десятичную. Преобразование это происходит автоматически с помощью специальных устройств кодирования/декодирования.
Кодирование текстовых данных
Начиная с конца 60-х годов, компьютеры все больше стали использоваться для обработки текстовых данных и в настоящее время большая часть персональных компьютеров в мире (и наибольшее время) занято обработкой именно текстов.
Традиционно для кодирования одного символа используется 1 байт (8 двоичных разрядов). Это позволяет закодировать N = 2 8 – 256 различных символов, которых обычно бывает достаточно для представления текстовых данных (прописные и заглавные буквы латинского алфавита, цифры, знаки, графические символы и т.д., а также прописные и заглавные буквы одного национального алфавита).
При двоичном кодировании текстовых данных каждому символу ставится в соответствие своя уникальная последовательность из восьми нулей и единиц, свой уникальный двоичный код от 00000000 до 11111111 (десятичный код от 0 до 255).
Таким образом, человек различает символы по их начертанию, а компьютер – по их коду. При выводе символа на экран монитора производится декодирование: по двоичному коду символа на экране строится его изображение. Кодирование и декодирование происходят в компьютере автоматически за миллионные доли секунды.
Присвоение символу конкретного двоичного кода – это вопрос соглашения, которое фиксируется в кодовой таблице ASCII (стандартный код информационного обмена). Первые 33 кода (с 0 по 32) соответствуют не символам, а операциям (перевод строки, ввод пробела и т.д.). Коды с 33 по 127 являются интернациональными и соответствуют символам латинского алфавита цифрам, знакам арифметических операций и знакам препинания.
Коды с 128 по 255 содержат коды национального алфавита. К сожалению, в настоящее время существуют пять различных кодовых таблиц для русских букв, поэтому тексты, созданные в одной кодировке, не будут правильно отображаться в другой.
Хронологически одним из первых стандартов кодирования русских букв на компьютерах был код КОИ-8 («Код обмена информацией 8-битный»). Эта кодировка применяется на компьютерах с операционной системой UNIX.
Наиболее распространенная кодировка – это стандартная кириллическая кодировка Microsoft Windows, обозначаемая сокращением СР1251 («СР» означает «Code Page», «кодовая страница»). Все Windows-приложения, работающие с русским языков, поддерживают эту кодировку (Windows 1251, Win 1251).
Для работы в среде операционной системы MS-DOS используется «альтернативная» кодировка, в терминологии фирмы Microsoft – СР866 (КОИ-7).
Фирма Apple разработала для компьютеров Macintosh свою собственную кодировку русских букв (Мас).
Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.
Одному и тому же двоичному коду в разных кодовых таблицах ставится в соответствие различные символы.
| Двоичный код | Десятичный код | КОИ8 | СР1251 | СР866 | Мас | ISO |
| 11000010 | 194 | б | В | – | – | Т |
К счастью, в большинстве случаев пользователь не должен заботиться о перекодировках текстовых документов. При работе в приложениях Windows предусмотрена возможность автоматической перекодировки документов, созданных в приложениях MS-DOS. При работе в Интернет с использованием броузеров Internet Explorer и Netscape Communicator происходит автоматическая перекодировка Web-страниц.
Существует также международный стандарт Unicode, который отводит на каждый символ не один байт, а два, и потому с его помощью можно закодировать не 256 символов, а N = 2 16 = 65536 различных символов. Кодировка используется в основном для передачи данных по сети Internet, ее поддерживает платформа Microsoft Windows&Office.
Кодирование графических данных
С 80-х годов интенсивно развивается технология обработки на компьютере графических данных. Компьютерная графика позволяет создавать и редактировать рисунки, схемы, чертежи, преобразовывать изображения (фотографии, слайды и т.д.), представлять статистические данные в форме деловой графики, создавать анимационные модели (научные, игровые и т.д.), обрабатывать «живое видео».
Графика на экране монитора представляется в виде изображения, которое формируется из точек (пикселей), образующих характерный узор называемый растром. Объем растрового изображения определяется умножением количества пикселей на информационный объем одной точки, который зависит от количества возможных цветов. Качество изображения определяется разрешающей способностью монитора. Чем она выше, то есть больше количество строк растра и точек в строке, тем выше качество изображения. В современных ПК в основном используют следующие разрешающие способности экрана: 640 на 480, 800 на 600, 1024 на 768 и 1280 на 1024 точки.
Поскольку линейные координаты и индивидуальные свойства каждой точки (яркость) можно выразить с помощью целых чисел, то можно сказать, что растровое кодирование позволяет использовать двоичный код для представления графических данных. В простейшем случае (черно-белое изображение без градаций серого цвета) каждая точка экрана может иметь лишь два состояния — «черная» или «белая», т.е. для хранения ее состояния необходим 1 бит.
Цветные изображения могут иметь различную глубину цвета (бит на точку: 4, 8, 16, 24). Каждый цвет можно рассматривать как возможное состояние точки, и тогда по формуле N = 2 I может быть вычислено количество цветов, отображаемых на экране монитора.
Все многообразие красок на экране получается путем смешения трех основных цветов: красного (Red R), зеленого (Green G) и синего (Blue B) – принцип декомпозиции. Такая система кодирования называется системой RGB.
Каждый пиксель на экране состоит из трех близко расположенных элементов, светящихся этими цветами. Код цвета пикселя содержит информацию о доле каждого базового цвета. Если все три составляющие имеют одинаковую интенсивность (яркость), то из их сочетаний можно получить 8 различных цветов (2 3 ).
Кодировка 8-цветной палитры с помощью трехразрядного двоичного кода. Наличие базового цвета обозначено единицей, а отсутствие нулем:
| R | G | B | Цвет |
| 0 | 0 | 0 | черный |
| 0 | 0 | 1 | синий |
| 0 | 1 | 0 | зеленый |
| 0 | 1 | 1 | голубой |
| 1 | 0 | 0 | красный |
| 1 | 0 | 1 | розовый |
| 1 | 1 | 0 | коричневый |
| 1 | 1 | 1 | белый |
Шестнадцатицветная палитра получается при использовании 4-разрядной кодировки пикселя: к трем битам базовых цветов добавляется один бит интенсивности. Этот бит управляет яркостью всех трёх цветов одновременно. Например, если в 8-цветной палитре код 100 обозначает красный цвет, то в 16-цветной палитре: 0100 – красный, 1100 – ярко-красный цвет; 0110 – коричневый, 1110 – ярко-коричневый (желтый).
Еще большее количество цветов получается при раздельном управлении интенсивностью каждого базового цвета. Причем интенсивность может иметь более двух уровней, если для кодирования каждого из базовых цветов выделять больше одного бита.
Если для кодирования яркости каждой из основных составляющих использовать по 256 значений, то для кодирования одной точки необходимо 24 разряда. Такой режим называется полноцветным (true color), он обеспечивает 16,5 млн. цветов.
| Глубина цвета (I) | Количество отображаемых цветов (N) |
| 4 | 2 4 = 16 |
| 8 | 2 8 =256 |
| 16 (High Color) | 2 16 = 65 536 |
| 24 (True Color) | 2 24 = 16 777 216 |
Общепринятым на сегодняшний день считается представление черно-белых иллюстраций в виде комбинации точек с 256 градациями серого цвета, значит для кодирования точки любой яркости достаточно 8 бит.
При кодировании цветных изображений с помощью 8 бит можно передать только 256 цветовых оттенков. Такой метод называется индексным. Код каждой точки представляет не сам цвет, а его номер (индекс) в справочной таблице, называемой палитрой, которая прикладывается к графическим данным.
Каждому из основных цветов можно поставить в соответствие дополнительный цвет, дополняющий основной до белого. Такими цветами являются: голубой (Cyan C), пурпурный (Magenta M) и желтый (Yellow Y). К ним также можно применить принцип декомпозиции. Такой метод кодирования принят в полиграфии, но при этом используется еще один цвет – черный (Black K). Данная система кодирования обозначается буквами CMYK. Для кодирования одной точки необходимо уже 32 разряда. Такой режим также называется полноцветным (true color).
При уменьшении количества двоичных разрядов до 16, можно сократить объем данных, но и диапазон кодируемых цветов заметно сократиться. Такой режим называется (High Color).
Двоичный код изображения, выводимого на экран, хранится в видеопамяти. Видеопамять – это электронное энергозависимое запоминающее устройство. Размер видеопамяти зависит от разрешающей способности дисплея и количества цветов. Но ее минимальный объем определяется так, чтобы поместился один кадр (одна страница) изображения, т.е. как результат произведения разрешающей способности монитора на число битов, отводимых на 1 пиксель.
Кодирование звуковых данных
С начала 90-х годов персональные компьютеры получили возможность работать со звуком. Каждый компьютер, имеющий звуковую плату (аудиоадаптер), микрофон и колонки, может записывать, сохранять и воспроизводить звуковые данные с помощью специальных программных средств (редакторов аудиофайлов).
Метод FM (Frequency Modulation). Звуковой сигнал – это непрерывная волна с изменяющейся амплитудой и частотой. Чем больше амплитуда сигнала, тем он громче для человека, чем больше частота сигнала, тем выше тон. В процессе кодирования фонограммы, непрерывная звуковая волна разбивается по времени на отдельные маленькие временные участки (элементарные звуки). Для каждого участка устанавливается определенная величина амплитуды, каждому значению амплитуды присваивается двоичный код. Качество кодирования зависит от количества измерений уровня сигнала в единицу времени.
Аудиоадаптер (звуковая плата) – специальное устройство, подключаемое к компьютеру, предназначенное для преобразования электрических колебаний звуковой частоты в числовой двоичный код при вводе звука и для обратного преобразования (из числового кода в электрические колебания) при воспроизведении звука.
В процессе записи звука аудиоадаптер с определенным периодом измеряет амплитуду электрического тока и заносит в регистр двоичный код полученной величины. Затем полученный код из регистра переписывается в оперативную память компьютера. Качество компьютерного звука определяется характеристиками аудиоадаптера: частотой дискретизации и разрядностью.
Частота дискретизации – это количество измерений входного сигнала за 1 секунду. Частота измеряется в герцах (Гц). Одно измерение за одну секунду соответствует частоте 1 Гц. 1000 измерений за 1 секунду – 1 килогерц (кГц).
Разрядность регистра – число бит в регистре аудиоадаптера. Разрядность определяет точность измерения входного сигнала. Чем больше разрядность, тем меньше погрешность каждого отдельного преобразования величины электрического сигнала в число и обратно. Если разрядность равна 8 (16), то при измерении входного сигнала может быть получено 2 8 = 256 (2 16 = 65536) различных значений.
При таких преобразованиях неизбежны потери информации, связанные с кодированием, вместе с тем этот метод обеспечивает весьма компактный код.
Метод таблично-волнового синтеза (Wave–Table) лучше соответствует современному уровню развития техники. В заранее подготовленных таблицах хранятся образцы звуков для множества различных музыкальных инструментов. Такие образцы называются сэмплами. Числовые коды выражают тип инструмента, номер его модели, высоту тона, продолжительность и интенсивность звука, динамику его изменения, некоторые параметры среды, в которой происходит звучание, а также и другие параметры, характеризующие особенности звучания. Так как в качестве образцов используются реальные звуки, качество звука получается высоким близким к звучанию реальных музыкальных инструментов.
Послесловие к лекции о кодировании данных в компьютере
Каждый новый вид данных, добавляемый к компьютерной обработке, исторически тем или иным способом сводился к числовому представлению.
Исходя из принципов устройства компьютера, можно утверждать, что любые данные хранятся и обрабатываются в нем в двоичном виде, так как все виды данных так или иначе преобразуются в числовую форму, а числа хранятся в двоичной системе.
Память компьютера, как бы велика она не была, состоит из конечного числа отдельных битов, значит, он по определению способен хранить только дискретные данные.
Например, система целых чисел является дискретной, а система действительных чисел непрерывной.
Непрерывная (аналоговая) величина ассоциируется с графиком функции, а дискретная – с таблицей ее значений. При рассмотрении этих двух объектов разной природы можно сделать вывод о том, что с уменьшением интервала дискретизации (увеличением количества точек в таблице) различия между величинами существенно уменьшаются. Это означает, что при таких условиях дискретизированная величина хорошо описывает исходную (непрерывную).
Таким образом, в тех случаях, когда рассматриваемая величина имеет настолько большое количество значений, что мы не в состоянии их различить, ее практически можно считать непрерывной.
Так снимается существующая проблема преобразования естественной информации в пригодную для компьютера дискретную форму.
Хранение данных в компьютере
Для хранения и обработки данных в компьютере используется совокупность определенного количества разрядов, которая называется разрядной сеткой. При этом число элементарных разрядов n, с которыми компьютер оперирует как с одним целым (считывает из памяти, производит вычисления), характеризует разрядность его элементов (например, всевозможных регистров процессора, запоминающих устройств). В современных компьютерах используется число разрядов n, являющееся степенью числа 2.
Группа из восьми соседних элементарных ячеек (регистров) и называется байтом. С помощью одного байта можно закодировать 2 8 =256 различных букв, цифр или положительных чисел в диапазоне от 0 до 255.
Возможности байта для кодирования данных ограничены из-за слишком малой разрядности. Поэтому компьютеры устроены так, что они могут оперировать как с единым целым не только с одним байтом, но также и с группами из двух, четырех, восьми и т.д. соседних байт.
Подобные группы байт принято называть (в зависимости от архитектуры компьютера) словом, полусловом, двойным словом. В большинстве случаев, словом называют группу из четырех соседних байт, группу из двух соседних байт – полусловом, группу из восьми соседних байт – двойным словом. Такие единицы используются в основном для представления числовых данных.
7
Представление и обработка числовой информации в компьютере
Представление целых чисел без знака. Целое число без знака располагается в регистре (слове, полуслове или двойном слове) так, что его самый младший двоичный разряд записывается в крайний правый бит разрядной сетки, причем все разряды должны быть обязательно заполнены, даже если в этом разряде будет храниться “незначащий ноль”. Например, десятичное число 1910=100112 в 16-разрядном представлении (полуслове) запишется так:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
При такой форме представления целых чисел без знака диапазон их возможных значений находится в пределах от 0 до 2 n -1, где n – число разрядов в регистре (разрядной сетке). В таблице приведены максимальные значения десятичных чисел без знака и соответствующее им число разрядов (бит):
| Число разрядов | Максимальное двоичное число без знака | Максимальное десятичное число без знака |
| 8 | 11111111 | 2 8 –1 = 255 |
| 16 | 1111111111111111 | 2 16 –1 = 65535 |
| 32 | 11111111111111111111111111111111 | 2 32 –1 = 4294967295 |
Представление целых чисел со знаком. Для представления целых чисел со знаком один разряд, как правило, старший отводится под знак числа. Знак положительного числа кодируется нулем, а знак отрицательного – единицей в этом разряде.
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
Такая форма представления целых чисел со знаком, когда крайний левый бит разрядной сетки отводится под знак числа, а остальные n-1 бит отводятся под цифры числа в двоичной системе счисления, называется прямым кодом двоичного числа. Прямой код положительного числа фактически совпадает с самим числом, а прямой код отрицательного числа отличается от положительного только наличием единицы в знаковом разряде.
Естественно, что выделение одного разряда под знак числа приводит к уменьшению имеющихся в нашем распоряжении разрядов регистра на единицу. Поэтому, максимальное значение числа, которое можно представить в n-разрядном регистре, также уменьшится. Теперь оно будет равно 2 n -1 -1
Форма представления двоичных чисел в виде прямого кода используется в компьютере только для представления целых положительных чисел.
Сложение положительных чисел в компьютерной арифметике осуществляется над прямыми кодами двоичных чисел. Для реализации операции вычитания, используется специальная форма представления отрицательных чисел, называемая дополнительным кодом, что позволяет заменить операцию вычитания простым сложением. При этом операция сложения выполняется над всеми разрядами полученного дополнительного кода, т.е. распространяется и на разряды знаков, рассматриваемых в данном случае как разряды целой части числа.
Дополнительный код отрицательного двоичного числа получается по следующему правилу:
Таким образом, при алгебраическом сложении (алгебраическое сложение – это сложение чисел со знаками) двух двоичных чисел с использованием дополнительного кода, положительные слагаемые представляются в компьютере в прямом коде, а отрицательные – в дополнительном. Затем производится суммирование этих кодов, включая разряды знаков. При возникновении переноса из знакового разряда единица переноса отбрасывается, т.к. она вышла за пределы разрядной сетки. В результате получается алгебраическая сумма в прямом коде, если она положительна, и в дополнительном коде, если эта сумма получилась отрицательной.
Представление чисел в естественной форме в виде записи целой и дробной части числа, отделенных друг от друга запятой, называется формой представления чисел с фиксированной запятой. Ясно, что занимать разряды для хранения нулей в конце числа или в начале после запятой крайне неэффективно. Поэтому для представления вещественных чисел в современных компьютерах применяется другая форма, которую принято называть форма представления вещественных чисел с плавающей запятой.
В этом формате разряды регистра разбиваются на два поля, имеющие название мантисса и порядок. К тому же используется нормализованная форма записи чисел, при которой у мантиссы старший разряд обязательно меньше 1, а порядок – целое положительное или отрицательное число:
При таком способе представления отпадает необходимость кодирования знака порядка.
Т.к. при нормализованной форме записи вещественного числа в двоичной системе счисления первая цифра мантиссы у любого числа всегда 1, то отпадает необходимость хранить эту единицу. Поэтому мантисса запоминается без первой единицы. Она считается скрытым разрядом. Таким образом, при хранении мантиссы этой единицы нет, однако при аппаратном выполнении операций она, естественно учитывается.

