Двоичный код способы передачи кода

Содержание
  1. MT1402: Теоретические основы информатики. Имитационное моделирование
  2. Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды
  3. Неравномерный код с разделителем
  4. Двоичные коды
  5. Преимущества двоичного кода
  6. Классификация двоичных кодов
  7. Взвешенные коды
  8. Невзвешенные коды
  9. Код избытка-3
  10. пример
  11. Серый код
  12. Применение кода Грея
  13. Двоичный код (BCD)
  14. Преимущества кодов BCD
  15. Недостатки кодов BCD
  16. Буквенно-цифровые коды
  17. Коды ошибок
  18. Двоичное кодирование информации
  19. Содержание статьи
  20. Почему в компьютере используется двоичный код
  21. Единицы компьютерной информации
  22. Кодирование числовой информации
  23. • небольшие целые числа без знака
  24. • большие целые числа и числа со знаком
  25. • дробные числа со знаком
  26. Двоичное кодирование текстовой информации
  27. Кодирование изображений в двоичный код
  28. Кодирование звуковой информации
  29. Особенности бинарного кодирования видео

MT1402: Теоретические основы информатики. Имитационное моделирование

Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды

Как следует из названия, в способах кодировании, относящихся к этой группе, знаки первичного алфавита (например, русского) кодируются комбинациями символов двоичного алфавита (т.е. 0 и 1), причем, длина кодов и, соответственно, длительность передачи отдельного кода, могут различаться. Длительности элементарных сигналов при этом одинаковы %%(τ_0 = τ_1 = τ)%%. Очевидно, для передачи информации, в среднем приходящейся на знак первичного алфавита, необходимо время %%K(A,2) \cdot τ%%.

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

За счет чего возможна такая оптимизация? Очевидно, суммарная длительность сообщения будет меньше, если применить следующий подход: тем знакам первичного алфавита, которые встречаются в сообщении чаще, присвоить меньшие по длине коды, а тем, относительная частота которых меньше — коды более длинные. Другими словами, коды знаков первичного алфавита, вероятность появления которых в сообщении выше, следует строить из возможно меньшего числа элементарных сигналов, а длинные коды использовать для знаков с малыми вероятностями.

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

Каким образом она может быть декодирована? Если бы код был равномерным, приемное устройство просто отсчитывало бы заданное (фиксированное) число элементарных сигналов (например, 5, как в коде Бодо) и интерпретировало их в соответствии с кодовой таблицей. При использовании неравномерного кодирования возможны два подхода к обеспечению различимости кодов. Первый состоит в использовании специальной комбинации элементарных сигналов, которая интерпретируется декодером как разделитель знаков. Второй — в применении префиксных кодов. Рассмотрим подробнее каждый из подходов.

Неравномерный код с разделителем

Условимся, что разделителем отдельных кодов букв будет последовательность 00 (признак конца знака), а разделителем слов-слов — 000 (признак конца слова — пробел). Довольно очевидными оказываются следующие правила построения кодов:

  • код признака конца знака может быть включен в код буквы, поскольку не существует отдельно (т.е. кода всех букв будут заканчиваться 00);
  • коды букв не должны содержать двух и более нулей подряд в середине (иначе они будут восприниматься как конец знака);
  • код буквы (кроме пробела) всегда должен начинаться с 1;
  • разделителю слов (000) всегда предшествует признак конца знака; при этом реализуется последовательность 00000 (т.е., если в конце кода встречается комбинация . 000 или . 0000, они не воспринимаются как разделитель слов); следовательно, коды букв могут оканчиваться на 0 или 00 (до признака конца знака).

В соответствии с перечисленными правилами построим кодовую табл. 3.1 для букв русского алфавита, основываясь на приведенных ранее (табл. 2.1.) вероятностях появления отдельных букв.

Теперь можно найти среднюю длину кода К(r,2) для данного способа кодирования:

Поскольку для русского языка, %%I_1(r) = 4,356 бит%%, избыточность данного кода, согласно (3.5), составляет:

это означает, что при данном способе кодирования будет передаваться приблизительно на 14% больше информации, чем содержит исходное сообщение. Аналогичные вычисления для английского языка дают значение %%К(e,2) = 4,716%%, что при %%I_1(e) = 4,036%% бит приводят к избыточности кода %%Q(e,2) = 0,168%%.

Буква Код %%p_j\cdot 10^3%% %%k_j%% Буква Код %%p_j\cdot 10^3%% %%k_j%%
пробел 000 174 3 я 1011000 18 7
о 100 90 3 ы 1011100 16 7
е 1000 72 4 з 1101000 16 7
а 1100 62 4 ь,ъ 1101100 14 7
и 10000 62 5 б 1110000 14 7
т 10100 53 5 г 1110100 13 7
н 11000 53 5 ч 1111000 12 7
с 11100 45 5 й 1111100 10 7
р 101000 40 6 х 10101000 9 8
в 101100 38 6 ж 10101100 7 8
л 110000 35 6 ю 10110000 6 8
к 110100 28 6 ш 10110100 6 8
м 111000 26 6 ц 10111000 4 8
д 111100 25 6 щ 10111100 3 8
п 1010000 23 7 э 11010000 3 8
у 1010100 21 7 ф 11010100 2 8

Рассмотрев один из вариантов двоичного неравномерного кодирования, попробуем найти ответы на следующие вопросы: возможно ли такое кодирование без использования разделителя знаков? Существует ли наиболее эффективный (оптимальный) способ неравномерного двоичного кодирования?

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

  • В языковедении термин «префикс» означает «приставка».

Неравномерный код может быть однозначно декодирован, если никакой из кодов не совпадает с началом (префиксом*) какого-либо иного более длинного кода.

Например, если имеется код 110, то уже не могут использоваться коды 1, 11, 1101, 110101 и пр. Если условие Фано выполняется, то при прочтении (расшифровке) закодированного сообщения путем сопоставления с таблицей кодов всегда можно точно указать, где заканчивается один код и начинается другой.

Пример.Пусть имеется следующая таблица префиксных кодов:

а л м р у ы
10 010 00 11 0110 0111

Требуется декодировать сообщение:

Декодирование производится циклическим повторением следующих действий:

  • (a) отрезать от текущего сообщения крайний левый символ, присоединить справа к рабочему кодовому слову;
  • (b) сравнить рабочее кодовое слово с кодовой таблицей; если совпадения нет, перейти к (а);
  • (c) декодировать рабочее кодовое слово, очистить его;
  • (d) проверить, имеются ли еще знаки в сообщении; если «да», перейти к (а).

Применение данного алгоритма дает:

шаг рабочее слово текущее сообщение распознанный знак декодированное сообщение
0 Пусто 0010001000011101010101110000110
1 0 0100010000111010101110000110 нет
2 00 1000100001110101011110000110 м м
3 1 0001000011101010101110000110 нет м
4 10 0010000111010101110000110 а ма
5 0 010000111010101110000110 нет ма
6 00 10000111010101110000110 м мам
.

Доведя процедуру до конца, получим сообщение: «мама мыла раму».

Таким образом, использование префиксного кодирования позволяет делать сообщение более коротким, поскольку нет необходимости передавать разделители знаков. Однако условие Фано не устанавливает способа формирования префиксного кода и, в частности, наилучшего из возможных. Мы рассмотрим две схемы построения префиксных кодов.

Источник

Двоичные коды

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

Преимущества двоичного кода

Ниже приведен список преимуществ, которые предлагает двоичный код.

Двоичные коды подходят для компьютерных приложений.

Двоичные коды подходят для цифровой связи.

Двоичные коды делают анализ и проектирование цифровых схем, если мы используем двоичные коды.

Поскольку используются только 0 и 1, реализация становится легкой.

Двоичные коды подходят для компьютерных приложений.

Двоичные коды подходят для цифровой связи.

Двоичные коды делают анализ и проектирование цифровых схем, если мы используем двоичные коды.

Поскольку используются только 0 и 1, реализация становится легкой.

Классификация двоичных кодов

Коды широко подразделяются на следующие четыре категории.

  • Взвешенные коды
  • Невзвешенные коды
  • Двоичный код десятичного кода
  • Буквенно-цифровые коды
  • Коды обнаружения ошибок
  • Коды, исправляющие ошибки

Взвешенные коды

Взвешенные двоичные коды — это те двоичные коды, которые подчиняются принципу позиционного веса. Каждая позиция числа представляет определенный вес. Несколько систем кодов используются для выражения десятичных цифр от 0 до 9. В этих кодах каждая десятичная цифра представлена ​​группой из четырех битов.

Невзвешенные коды

В этом типе двоичных кодов позиционные веса не назначаются. Примерами невзвешенных кодов являются код Excess-3 и код Грея.

Код избытка-3

Код Excess-3 также называется кодом XS-3. Это невзвешенный код, используемый для выражения десятичных чисел. Кодовые слова Excess-3 получаются из кодовых слов BCD 8421, добавляющих (0011) 2 или (3) 10 к каждому кодовому слову в 8421. Коды избыточного 3 получают следующим образом:

пример

Серый код

Это невзвешенный код и это не арифметические коды. Это означает, что для битовой позиции нет конкретных весов. У него есть особая особенность, что при каждом увеличении десятичного числа будет изменяться только один бит, как показано на рис. Поскольку за один раз изменяется только один бит, серый код называется единичным кодом расстояния. Серый код — это циклический код. Код Грея нельзя использовать для арифметической операции.

Применение кода Грея

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

Датчик положения вала создает кодовое слово, которое представляет угловое положение вала.

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

Датчик положения вала создает кодовое слово, которое представляет угловое положение вала.

Двоичный код (BCD)

В этом коде каждая десятичная цифра представлена ​​4-битным двоичным числом. BCD — это способ выразить каждую десятичную цифру двоичным кодом. В BCD с четырьмя битами мы можем представить шестнадцать чисел (от 0000 до 1111). Но в коде BCD используются только первые десять из них (от 0000 до 1001). Остальные шесть кодовых комбинаций, то есть 1010–1111, недопустимы в BCD.

Преимущества кодов BCD

  • Это очень похоже на десятичную систему.
  • Нам нужно запомнить двоичный эквивалент десятичных чисел только от 0 до 9.

Недостатки кодов BCD

Сложение и вычитание BCD имеют разные правила.

Арифметика BCD немного сложнее.

BCD требуется большее количество бит, чем двоичное, чтобы представить десятичное число. Так что BCD менее эффективен, чем двоичный.

Сложение и вычитание BCD имеют разные правила.

Арифметика BCD немного сложнее.

BCD требуется большее количество бит, чем двоичное, чтобы представить десятичное число. Так что BCD менее эффективен, чем двоичный.

Буквенно-цифровые коды

Бинарная цифра или бит может представлять только два символа, поскольку имеет только два состояния: «0» или «1». Но этого недостаточно для связи между двумя компьютерами, потому что там нам нужно гораздо больше символов для связи. Эти символы должны представлять 26 алфавитов с заглавными и строчными буквами, числами от 0 до 9, знаками препинания и другими символами.

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

  • Американский стандартный код для обмена информацией (ASCII).
  • Расширенный двоичный код десятичного кода обмена (EBCDIC).
  • Пяти битный код Бодо.

Код ASCII — это 7-битный код, тогда как EBCDIC — это 8-битный код. Код ASCII чаще используется во всем мире, в то время как EBCDIC используется в основном на больших компьютерах IBM.

Коды ошибок

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

Источник

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

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

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

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

Перед выводом информации на экран, в аудиосистему или распечатыванием, компьютер «переводит» ее в понятный человеку язык. Но внутри компьютера она хранится и обрабатывается исключительно в виде двоичного кода.

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

Содержание статьи

Почему в компьютере используется двоичный код

Люди для записи текстовой информации используют буквы. В русском языке их 33. Комбинациями из десяти цифр (от 0 до 9) мы записываем числовые данные. При работе с графической информацией пользуемся палитрой из миллионов цветов. Наши уши различают звуки в диапазоне от 16 до 20000 Гц.

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

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

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

В технике намного удобнее иметь дело с множеством простых элементов, чем с небольшим количеством сложных.

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

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

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

Перевод данных в двоичный код называется кодированием.

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

Компьютер осуществляет кодирование «на лету» при получении данных извне: ввод текста пользователем с клавиатуры, запись видео с веб-камеры, запись звука с микрофона и т.д.

Перед выводом информации на экран, в аудиосистему или же ее распечатыванием, происходит обратный процесс (декодирование).

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

С технической стороны компьютерный двоичный код реализуется наличием или отсутствием определенных свойств (импульсов) у мельчайших запоминающих элементов. Эти импульсы могут быть:

• фотооптическими

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

Например, внутри жесткого диска находится быстро вращающаяся пластина. Вся ее поверхность тоже представляет собой спираль, состоящую из последовательности миллионов мелких участков. Каждый из них является элементом, который может принимать одно из двух состояний: «намагниченное», «ненамагниченное». Эти элементы и формируют двоичный код, в котором кодируется какая-то информация. Считывание состояния элементов осуществляется специальной головкой, которая быстро движется по поверхности пластины;

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

В аналогичной форме информация хранится и во всех других запоминающих микросхемах (флешки, SSD-носители и др.).

Процессор компьютера обрабатывает двоичный код тоже в виде электрических импульсов.

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

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

Единицы компьютерной информации

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

Такой мельчайший элемент, участвующий в формировании бинарного кода, называется битом.

Битом является, например, каждая темная или светлая точка дорожки оптического диска, каждая запоминающая ячейка оперативной памяти компьютера и т.д.

Чем больше битов содержит какой-то носитель, тем больше информации на нем можно закодировать. К примеру, оптический диск типа «CD» может содержать около 6 млрд. битов. Жесткий диск — в десятки раз больше.

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

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

Блок из 2 битов может принимать одно из 4 состояний:

В 3-хбитном блоке можно закодировать уже одно из 8 состояний:

Ну а 8-битный блок может принимать аж 256 разных состояний. Это уже достаточно существенная частичка двоичного кода, позволяющая отобразить один из значительного количества вариантов.

Например, каждому состоянию 8-битного блока можно сопоставить какую-то букву. Вариантов, а их 256, будет достаточно для кодирования всех русских букв, включая строчные и прописные их варианты, а также всех знаков препинания. Заменяя каждую букву соответствующим 8-мибитным блоком, из двоичного кода можно составить текст.

Этот принцип и используется для записи в компьютере текстовой информации (подробнее речь об этом пойдет ниже).

Как видите, 8-битная ячейка имеет вполне реальную практическую ценность. Поэтому ее и решили считать минимальной единицей компьютерной информации. Эта единица получила название байт.

Текстовые файлы состоят из сотен, тысяч или даже десятков тысяч букв. Соответственно, для их хранения в двоичном коде требуются сотни, тысячи или десятки тысяч байтов.

Поэтому на практике гораздо чаще приходится имеет дело не с байтами, а с более крупными единицами:

• килобайтами (1 килобайт = 1024 байт);

• мегабайтами (1 мегабайт = 1024 килобайт);

• гигабайтами (1 гигабайт = 1024 мегабайт);

• терабайтами (1 терабайт = 1024 гигабайт).

Кодирование числовой информации

Для работы с числовой информацией мы пользуемся системой счисления, содержащей десять цифр: 0 1 2 3 4 5 6 7 8 9. Эта система называется десятичной.

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

Таким образом, используя всего десять цифр и вводя дополнительные разряды, мы можем записывать и проводить математические операции с любыми, даже самыми большими числами.

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

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

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

Вот таблица первых десяти чисел в каждой из этих систем счисления:

Как видите, в десятичной системе счисления для отображения любой из первых десяти цифр достаточно 1 разряда. В двоичной системе для тех же целей потребуется уже 4 разряда.

Соответственно, для кодирования этой же информации в виде двоичного кода нужен носитель емкостью как минимум 4 бита (0,5 байта).

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

Так, самое большое десятичное число, которое можно отобразить в 8 разрядах двоичной системы — 255, в 16 разрядах – 65535, в 24 разрядах – 16777215.

Компьютер, кодируя числа в двоичный код, основывается на двоичной системе счисления. Но, в зависимости от особенностей чисел, может использовать разные алгоритмы:

• небольшие целые числа без знака

Для сохранения каждого такого числа на запоминающем устройстве, как правило, выделяется 1 байт (8 битов). Запись осуществляется в полной аналогии с двоичной системой счисления.

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

• большие целые числа и числа со знаком

Для записи каждого такого числа на запоминающем устройстве, как правило, отводится 2-байтний блок (16 битов).

Старший бит блока (тот, что крайний слева) отводится под запись знака числа и в кодировании самого числа не участвует. Если число со знаком «плюс», этот бит остается пустым, если со знаком «минус» – в него записывается логическая единица. Число же кодируется в оставшихся 15 битах.

Например, алгоритм кодирования числа +2676 будет следующим:

1. Перевести число 2676 из десятичной системы счисления в двоичную. В итоге получится 101001110100;

2. Записать полученное двоичное число в первые 15 бит 16-битного блока (начиная с правого края). Последний, 16-й бит, должен остаться пустым, поскольку кодируемое число имеет знак +.

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

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

Чтобы было понятно, рассмотрим алгоритм кодирования числа -2676:

1. Перевести число 2676 из десятичной системы счисления в двоичную. Получим все тоже двоичное число 101001110100;

2. Записать полученное двоичное число в первые 15 бит 16-битного блока. Затем инвертировать, то есть, изменить на противоположное, значение каждого из 15 битов;

3. Записать в 16-й бит логическую единицу, поскольку кодируемое число имеет отрицательное значение.

В итоге -2676 на запоминающем устройстве в двоичном коде будет иметь следующий вид:

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

Максимальным десятичным числом, которое можно закодировать в 15 битах запоминающего устройства, является 32767. Иногда для записи чисел по этому алгоритму выделяются 4-байтные блоки. В таком случае для кодирования каждого числа будет использоваться 31 бит плюс 1 бит для кодирования знака числа. Тогда максимальным десятичным числом, сохраняемым в каждую ячейку, будет 2147483647 (со знаком плюс или минус).

• дробные числа со знаком

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

Для записи каждого числа с плавающей запятой компьютер чаще всего выделяет 4-байтную ячейку (32 бита):

• в старшем бите этой ячейки (тот, что крайний слева) записывается знак числа. Если число отрицательное, в этот бит записывается логическая единица, если оно со знаком «плюс» – бит остается пустым.

• во втором слева бите аналогичным образом записывается знак порядка (что такое порядок поймете позже);

• в следующих за ним 7 битах записывается значение порядка.

• в оставшихся 23 битах записывается так называемая мантисса числа.

Чтобы стало понятно, что такое порядок, мантисса и зачем они нужны, переведем в двоичный код десятичное число 6,25.

Порядок кодирования будет примерно следующим:

1. Перевести десятичное число в двоичное (десятичное 6,25 равно двоичному 110,01);

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

3. Определить значение и знак порядка.

Значение порядка – это количество символов, на которое была сдвинута запятая для получения мантиссы. В нашем случае оно равно 3 (или 11 в двоичной форме);

Знак порядка – это направление, в котором пришлось двигать запятую: влево – «плюс», вправо – «минус». В нашем примере запятая двигалась влево, поэтому знак порядка – «плюс»;

Таким образом, порядок двоичного числа 110,01 будет равен +11, а его мантисса ,11001. В результате в двоичном коде на запоминающем устройстве это число будет записано следующим образом

Обратите внимание, что мантисса в двоичном коде записывается, начиная с первого после запятой знака, а сама запятая упускается.

Числа с плавающей запятой, кодируемые в 32 битах, называю числами одинарной точности.

Когда для записи числа 32-битной ячейки недостаточно, компьютер может использовать ячейку из 64 битов. Число с плавающей запятой, закодированное в такой ячейке, называется числом двойной точности.

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

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

Одним из наиболее «старых» (разработан еще в 1960-х гг.) является стандарт ASCII (от англ. American Standard Code for Information Interchange). Это 7-битный стандарт кодирования. То есть, используя его, компьютер записывает каждую букву или знак в одну 7-битную ячейку запоминающего устройства.

Как известно, ячейка из 7 битов может принимать 128 различных состояний. Соответственно, в стандарте ASCII каждому из этих 128 состояний соответствует какая-то буква, знак препинания или специальный символ.

Дальнейшее развитие компьютерной техники показало, что 7-битный стандарт кодирования является слишком «тесным». В 128 состояниях, принимаемых 7-битной ячейкой, невозможно закодировать буквы всех существующих в мире письменностей.

Поэтому разработчики программного обеспечения начали создавать собственные 8-битные стандарты кодировки текста. За счет дополнительного бита диапазон кодирования в них был расширен до 256 символов. Чтобы не было путаницы, первые 128 символов в таких кодировках, как правило, соответствуют стандарту ASCII. Оставшиеся 128 — реализуют региональные языковые особенности.

Восьмибитными кодировками, распространенными в нашей стране, являются KOI8, UTF8, Windows-1251 и некоторые другие.

Разработаны также и универсальные стандарты кодирования текста (Unicode), включающие буквы большинства существующих языков. В них для записи одного символа может использоваться до 16 битов и даже больше.

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

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

Кодирование изображений в двоичный код

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

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

Если говорят, что размер изображения составляет, например, 512 х 512 точек, это значит, что оно представляет собой матрицу, сформированную из 262144 пикселей (количество пикселей по вертикали, умноженное на количество пикселей по горизонтали).

Прибором, «разбивающим» изображения на пиксели, является любая современная фотокамера (в том числе веб-камера, камера телефона) или сканер.

И если в характеристиках камеры значится, например, «10 Mega Pixels», значит количество пикселей, на которые эта камера разбивает изображение для записи в двоичном коде, — 10 миллионов.

Чем на большее количество пикселей разделено изображение, тем реалистичнее выглядит фотография в декодированном виде (на мониторе или после распечатывания).

Однако качество кодирования фотографий в бинарный код зависит не только от количества пикселей, но также и от их цветового разнообразия.

Алгоритмов записи цвета в двоичном коде существует несколько. Самым распространенным из них является RGB. Эта аббревиатура – первые буквы названий трех основных цветов: красного – англ.Red, зеленого – англ. Green, синего – англ. Blue.

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

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

Чем больше битов выделяется для кодирования пикселя, тем больше вариантов смешивания этих трех каналов можно использовать и тем значительнее будет цветовая насыщенность изображения.

Цветовое разнообразие пикселей, из которых состоит изображение, называется глубиной цвета.

Если для кодирования каждого пикселя какого-то изображения выделяется 8 битов двоичного кода, цветовое разнообразие составит 256 цветов.

Глубина цвета 12-битов даст 4096 цветов, 16-битов — 65536 цветов, 18-битов — 262144 цветов.

Максимальная глубина цвета, используемая в компьютерной технике — 24 бита. Такую глубину часто называют True Color («Настоящий цвет»). Она позволяет отобразить около 16,7 млн. цветов. Глаз человека не способен воспринимать большее их количество.

Тем не менее, часто встречается и так называемая 32-битная глубина цвета. Она не предусматривает увеличение количества оттенков. Дополнительные биты, выделяемые для кодирования каждого пикселя, предназначены для регулирования степени его прозрачности или же не используются.

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

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

Зачем нужна векторная графика? В известной детской песенке поется, что для изображения «человечка» достаточно нарисовать всего две «палки» и «огуречек». А представьте, насколько трудно вручную составить человечка из большого числа точек.

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

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

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

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

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

Кодирование звуковой информации

Любой звук, слышимый человеком, является колебанием воздуха, которое характеризируется двумя основными показателями: частотой и амплитудой.

Амплитуда колебаний — это степень отклонения состояния воздуха от начального при каждом колебании. Она воспринимается нами как громкость звука.

Частота колебаний — это количество отклонений состояний воздуха от начального за единицу времени. Она воспринимается как высота звука.

Так, тихий комариный писк — это звук с высокой частотой, но с небольшой амплитудой. Звук грозы наоборот имеет большую амплитуду, но низкую частоту.

Если графически изобразить звуковую волну, она будет выглядеть следующим образом:

Схему работы компьютера со звуком в общих чертах можно описать так.

Микрофон превращает колебания воздуха в аналогичные по характеристикам электрические колебания.

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

Динамики акустической системы или наушников имеют противоположное микрофону действие. Они превращают электрические колебания в колебания воздуха.

Но каким же образом звуковая карта преобразовывает электрические колебания в двоичный код?

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

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

Но частота «дробления» звука должна быть достаточно высокой, иначе значения участков не будут отображать реальную геометрию волны. Вот примеры слишком низкой частоты дробления.

Описанный принцип разделения звуковой волны на мелкие участки и лежит в основе двоичного кодирования звука.

Аудиокарта компьютера разделяет звук на очень мелкие временные участки и кодирует степень интенсивности каждого из них в двоичный код. Такое «дробление» звука на части называется дискретизацией. Чем выше частота дискретизации, тем точнее фиксируется геометрия звуковой волны и тем качественней получается запись.

Так, простая речь (например, диктофонная запись) нормально воспринимается человеком, если частота дискретизации при кодировании была не ниже 8000 Гц (8 КГц). То есть, каждая секунда такой записи в двоичном коде должна состоять как минимум из 8000 частей.

Музыкальные же произведения, хранимые в компьютере, должны иметь еще более высокую частоту дискретизации. При записи стандартных звуковых CD она составляет минимум 44,1 КГц (44100 Гц).

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

Представим, например, что для кодирования каждого такого участка компьютер использует 8 битов. Как известно, 8-битная ячейка может принимать одно из 256 значений. Но вдруг разнообразие интенсивности участков, полученных при дискретизации какого-то звука, оказалось более широким (например, 512 вариантов). В таком случае, компьютер «округлит» интенсивность участков до ближайших доступных значений чтобы «уложиться» в 256 вариантов и качество записи получится низким.

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

Глубины звука в 8-битов достаточно для кодирования простой речи. Но музыкальные произведения с такой глубиной будут звучать отвратительно. Поэтому гораздо чаще встречаются звуковые файлы, закодированные с глубиной 16, 24 или даже 32 бита.

Следует учитывать, что далеко не все устройства, предназначенные для воспроизведения «цифрового» звука, могут работать с файлами, закодированными с высокой частотой дискретизации и/или большой глубиной звука. Такие файлы могут проигрываться на одном компьютере, и «не открываться» на другом (если звуковая карта не поддерживает настолько высокий уровень дискретизации или глубины звука).

Особенности бинарного кодирования видео

Видеозапись состоит из двух компонентов: звукового и графического.

Кодирование звуковой дорожки видеофайла в двоичный код осуществляется по тем же алгоритмам, что и кодирование обычных звуковых данных (см. предыдущий пункт).

Принципы кодирования видеоизображения схожи с кодированием растровой графики (рассмотрено выше), хотя и имеют некоторые особенности.

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

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

Источник

Читайте также:  Изолирующие прокладки виды способы применения
Оцените статью
Разные способы