Оглавление:
Всем известна такая способность компьютеров, как вычисление больших групп данных практически за считанные секунды. Однако не каждый знает, что это умение электронных машин зависит от наличия тока и напряжения.
Что такое двоичный код?
Как же компьютеру удаётся быстро обрабатывать огромные объёмы информации? Помогает ему в этом двоичная система исчисления. Данные, поступающие в это умное устройство, выглядят как единицы и нули. Каждой единице и каждому нулю соответствует определённое состояние электропровода:
- 1 — высокое напряжение.
- 0 — низкое.
Или же для единиц — наличие напряжения, а для нулей — отсутствие.
Основой двоичной системы исчисления являются двоичные коды. Что такое двоичный код?
Процесс, когда данные преобразуются в нули и единицы, называют «двоичная конверсия», а окончательное их обозначение — «двоичный код».
Разрядность двоичного кода
Все двоичные числа являются совокупностью битов, то есть, единиц и нулей, а каждый бит является одним разрядом или одной позицией в двоичном числе. Часто в задачах по информатике встречается вопрос, какое количество информации несёт тот или иной двоичный код. Следует знать, что в каждой цифре двоичного кода содержится количество информации, которое равно одному биту.
Расшифровка двоичного кода
Как же расшифровать двоичный код? Десятичное обозначение основано на десятичной системе исчисления, которую обычно используют в повседневной жизни и числовые значения здесь представлены в виде десяти цифр от нуля до девяти. Каждое из мест в числах в десять раз больше по ценности, чем место, находящееся справа. Для представления числа больше 9 в десятичной системе используется ноль, который ставится справа. А единица расположена слева на следующем, более ценном месте.
Подобным образом устроена и двоичная система, в которой используют только две цифры — ноль и единицу. Места слева ценнее в два раза, чем места справа. Так, для двоичного кода характерно, что одноместными числами могут быть только 0 и 1, а для любых чисел больше единицы требуется уже 2 места.
После 0 и 1 следуют такие двоичные числа:
- 10 (то есть, 1,0).
- 11 (1,1).
- 100 (1,0,0).
В двоичной системе 100 — это эквивалент цифры 4 десятичной системы. Таким образом, любое число можно выразить в виде двоичного кода, но оно будет занимать больше места. Также, закрепив за каждой буквой алфавита определённые двоичные числа, можно осуществить перевод в двоичный код любое слово.
Видео о переводе чисел в двоичный код
К примеру, для передачи сообщения по цифровому каналу связи, его кодируют, то есть, сопоставляют каждый символ исходного сообщения с некоторым кодом (кодовым словом). Для этого используются двоичные коды — последовательность единиц и нулей.
Например, чтобы закодировать слово «мама» выбирается следующий код:
- М — 00.
- А — 1.
- Ы — 01.
- Л — 0.
- У — 10.
Пробел — 11.
Закодированные буквы соединятся в одну битовую строчку и будут переданы по сети в таком виде:
МАМА МЫЛА ЛАМУ → 0010011100010111010010
После того как эта строка будет доставлена к пункту назначения, следует решить проблему восстановления исходного сообщения. Так, получив сообщение «001001», его раскодирование можно осуществить несколькими способами. К примеру, предположив, что оно состоит только из букв Л (код 0) и А (код 1), получится:
ЛЛАЛЛАААЛЛЛАЛАААЛАЛЛАЛ
Это значит, что вышеприведённый код не декодируется однозначно. Однозначно декодируемые коды — это такие коды, в которых любые кодовые сообщения расшифровываются только одним способом.
Равномерные коды
Данная проблема решается путём правильного разбития битовой цепочки на отдельно закодированные слова. Это можно сделать, к примеру, с использованием равномерного кода, длина слов в котором всегда одинакова. К примеру, данная фраза состоит из шести символов, а это значит, что можно применить трехбитный код.
Например, если закодировать вышеприведённую фразу с помощью такого кода:
- М — 000.
- А — 001.
- Ы — 010.
- Л — 011.
- Пробел — 101, то получится следующее:
МАМА МЫЛА ЛАМУ → 000001000001101000010011001101011001000100
Это сообщение имеет длину 42 бита. Несмотря на то что оно длиннее, чем первое, состоящее всего из 22 бит, его значительно легче разобрать на отдельные слова для раскодирования:
000 001 000 001 101 000 010 011 001 101 011 001 000 100
М А М А _ М Ы Л А _ Л А М У
Хотя такой равномерный код нельзя назвать экономичным, зато его можно однозначно декодировать.
Видео о переводе букв в двоичный код
Неравномерные коды
Неравномерный двоичный код — что это такое? Его иногда применяют для сокращения длины сообщений. В неравномерном коде кодовое слово, соответствующее определённому символу в алфавите, может отличаться по длине от других слов.
Например, если использовать для кодирования «Мама мыла ламу» такой код:
- М — 01.
- А — 00.
- Ы — 1011
- Л — 100.
- У — 1010.
- Пробел — 11, то получится:
МАМА МЫЛА ЛАМУ → 0100010011011011100001110000011010
Данное сообщение состоит из 34 бит. Эту битовую цепочку можно декодировать однозначно, поскольку в первой букве — М, имеющей код 01, код является уникальным, ведь другие кодовые слова не начинаются с 01. Таким же образом можно определить вторую букву — А. Свойство, когда кодовые слова не совпадают с началом других кодовых слов, называют условием Фано, а коды, декодируемые с помощью свойства Фано, называются префиксными.
Префиксные коды отличаются важным практическим значением — с их помощью декодируются символы получаемых сообщений по мере их поступления, не ожидая, когда всё сообщение придёт к получателю.
Виды двоичных кодов
Для представления целых чисел существуют следующие виды двоичных кодов:
- Знаковые.
- Беззнаковые.
Отрицательные числа могут быть представлены только в знаковом виде. Хранение целых чисел в компьютере осуществляется в формате с фиксированной запятой.
Беззнаковые коды
В целых беззнаковых двоичных кодах все двоичные разряды представлены в степени цифры 2:
- Если представлено восьмиразрядное беззнаковое целое число, то диапазон чисел записывается с помощью кода: 0…255.
- Если представлен шестнадцатиразрядный код — 0…65535.
В восьмиразрядных процессорах такие числа хранятся в двух ячейках памяти, которые расположены в соседних адресах. Работа с подобными числами осуществляется с помощью специальных команд.
Знаковые коды
В прямых целых знаковых кодах представление знака числа осуществляется с помощью старшего разряда в слове. Для прямого знакового кода для обозначения знака «+» используется ноль, а знака «-» — единица. При введении знакового разряда произойдёт смещение диапазона чисел в сторону отрицательных значений.
- Двоичное восьмиразрядное знаковое целое число записывается с помощью такого диапазона: -127…+127.
- Шестнадцатиразрядный код будет записан в диапазоне: -32767…+32767.
В восьмиразрядных процессорах такие числа хранятся также в двух ячейках памяти, адреса которых расположены рядом.
В качестве недостатка этого кода можно назвать необходимость раздельной обработки знакового и цифрового разрядов. Программы, работающие в таких алгоритмах, являются довольно сложными. Для того чтобы выделить и изменить знаковый разряд, придётся применить метод маскирования разрядов, что приводит к увеличению размера программы и уменьшению её быстродействия. Для предотвращения возникновения различий в алгоритме обработки цифрового и знакового разрядов используются обратные двоичные коды.
Отличие знаковых обратных двоичных кодов от прямых заключается в образовании отрицательных чисел с помощью инвертирования всех разрядов чисел. Однако при этом цифровой и знаковый разряды не имеют различий. Такие коды позволяют значительно упростить алгоритм работы.
А Вы знаете, что такое двоичный код и как его расшифровать? Помогли ли Вам в жизни эти знания? Расскажите об этом в комментариях.