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

08. 06.2018

Блог Дмитрия Вассиярова.

Двоичный код — где и как применяется?

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

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

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

Зачем нужен двоичный код?

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

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

Но намного проще обозначить наличие сигнала единицей «1», а его отсутствие – нулем «0». Тогда мы вместо всего этого сможем использовать простой и лаконичный двоичный код: 1011.

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

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

Условно, символ можно закодировать последовательностью из нескольких знаков. Двумя сигналами (или их отсутствием) можно описать всего четыре варианта: 00; 01;10; 11. Такой способ кодирования называется двухбитным. Но он может быть и:

  • Четырехбитным (как в примере на абзац выше 1011) позволяет записать 2^4 = 16 комбинаций-символов;
  • Восьмибитным (например: 0101 0011; 0111 0001). Одно время он представлял наибольший интерес для программирования, поскольку охватывал 2^8 = 256 значений. Это давало возможность описать все десятичные цифры, латинский алфавит и специальные знаки;
  • Шестнадцатибитным (1100 1001 0110 1010) и выше. Но записи с такой длинной – это уже для современных более сложных задач. Современные процессоры используют 32-х и 64-х битную архитектуру;

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

8 бит = 1 байт.

Так принято. Хотя символ, записанный 2-х или 32-х битным значением так же номинально можно назвать байтом. Кстати, благодаря двоичному коду мы можем оценивать объемы файлов, измеряемые в байтах и скорость передачи информации и интернета (бит в секунду).

Бинарная кодировка в действии

Для стандартизации записи информации для компьютеров было разработано несколько кодировочных систем, одна из которых ASCII, базирующаяся на 8-и битной записи, получила широкое распространение. Значения в ней распределены особым образом:

  • первый 31 символ – управляющие (с 00000000 по 00011111). Служат для служебных команд, вывода на принтер или экран, звуковых сигналов, форматирования текста;
  • следующие с 32 по 127 (00100000 – 01111111) латинский алфавит и вспомогательные символы и знаки препинания;
  • остальные, до 255-го (10000000 – 11111111) – альтернативная, часть таблицы для специальных задач и отображения национальных алфавитов;

Расшифровка значений в ней показано в таблице.

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

  • Байт из 8 знаков будем читать справа налево;
  • Если в обычных числах у нас используются разряды единиц, десятков, сотен, то здесь (читая в обратном порядке) для каждого бита представлены различные степени «двойки»: 256-124-64-32-16-8- 4-2-1;
  • Теперь смотрим на двоичный код числа, например 00011011. Там, где в соответствующей позиции есть сигнал «1» – берем значения этого разряда и суммируем их привычным способом. Соответственно: 0+0+0+32+16+0+2+1 = 51. В правильности данного метода вы можете убедиться, взглянув на таблицу кодов.

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

Язык, понятный современной технике

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

  • Текстовую информацию с параметрами форматирования;
  • Числа и любые операции с ними;
  • Графические и видео изображения;
  • Звуки, в том числе и выходящие и за предел нашей слышимости;

Помимо этого, благодаря простоте «изложения» возможны различные способы записи бинарной информации:

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

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

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

    Я же буду прощаться и после небольшого перерыва подготовлю для вас новую статью моего блога, на какую-нибудь интересную тему.

    Лучше, если вы сами ее мне подскажите;)

    До скорых встреч.

    Термин «бинарный» по смыслу – состоящий из двух частей, компонентов. Таким образом бинарные коды это коды которые состоят только из двух символьных состояний например черный или белый, светлый или темный, проводник или изолятор. Бинарный код в цифровой технике это способ представления данных (чисел, слов и других) в виде комбинации двух знаков, которые можно обозначить как 0 и 1. Знаки или единицы БК называют битами. Одним из обоснований применения БК является простота и надежность накопления информации в каком-либо носителе в виде комбинации всего двух его физических состояний, например в виде изменения или постоянства светового потока при считывании с оптического кодового диска.
    Существуют различные возможности кодирования информации.

    Двоичный код

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

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

    Наибольшее число, которое может быть выражено двоичным кодом, зависит от количества используемых разрядов, т.е. от количества битов в комбинации, выражающей число. Например, для выражения числовых значений от 0 до 7 достаточно иметь 3-разрядный или 3-битовый код:

    числовое значение двоичный код
    0 000
    1 001
    2 010
    3 011
    4 100
    5 101
    6 110
    7 111

    Отсюда видно, что для числа больше 7 при 3-разрядном коде уже нет кодовых комбинаций из 0 и 1.

    Переходя от чисел к физическим величинам, сформулируем вышеприведенное утверждение в более общем виде: наибольшее количество значений m какой-либо величины (температуры, напряжения, тока и др.), которое может быть выражено двоичным кодом, зависит от числа используемых разрядов n как m=2n. Если n=3, как в рассмотренном примере, то получим 8 значений, включая ведущий 0.
    Двоичный код является многошаговым кодом. Это означает, что при переходе с одного положения (значения) в другое могут изменятся несколько бит одновременно. Например число 3 в двоичном коде = 011. Число же 4 в двоичном коде = 100. Соответственно при переходе от 3 к 4 меняют свое состояние на противоположное все 3 бита одновременно. Считывание такого кода с кодового диска привело бы к тому, что из-за неизбежных отклонений (толеранцев) при производстве кодового диска изменение информации от каждой из дорожек в отдельности никогда не произойдет одновременно. Это в свою очередь привело бы к тому, что при переходе от одного числа к другому кратковременно будет выдана неверная информация. Так при вышеупомянутом переходе от числа 3 к числу 4 очень вероятна кратковременная выдача числа 7 когда, например, старший бит во время перехода поменял свое значение немного раньше чем остальные. Чтобы избежать этого, применяется так называемый одношаговый код, например так называемый Грей-код.

    Код Грея

    Грей-код является так называемым одношаговым кодом, т.е. при переходе от одного числа к другому всегда меняется лишь какой-то один из всех бит информации. Погрешность при считывании информации с механического кодового диска при переходе от одного числа к другому приведет лишь к тому, что переход от одного положения к другом будет лишь несколько смещен по времени, однако выдача совершенно неверного значения углового положения при переходе от одного положения к другому полностью исключается.
    Преимуществом Грей-кода является также его способность зеркального отображения информации. Так инвертируя старший бит можно простым образом менять направление счета и таким образом подбирать к фактическому (физическому) направлению вращения оси. Изменение направления счета таким образом может легко изменяться управляя так называемым входом ” Complement “. Выдаваемое значение может таким образом быть возврастающим или спадающим при одном и том же физическом направлении вращения оси.
    Поскольку информация выраженая в Грей-коде имеет чисто кодированный характер не несущей реальной числовой информации должен он перед дальнейшей обработкой сперва преобразован в стандартный бинарный код. Осуществляется это при помощи преобразователя кода (декодера Грей-Бинар) который к счастью легко реализируется с помощью цепи из логических элементов «исключающее или» (XOR) как програмным так и аппаратным способом.

    Соответствие десятичных чисел в диапазоне от 0 до 15 двоичному коду и коду Грея

    Двоичное кодирование Кодирование по методу Грея
    Десятичный код
    Двоичное значение Шестнадц. значение Десятичный код Двоичное значение Шестнадц. значение
    0 0000 0h 0 0000 0h
    1 0001 1h 1 0001 1h
    2 0010 2h 3 0011 3h
    3 0011 3h 2 0010 2h
    4 0100 4h 6 0110 6h
    5 0101 5h 7 0111 7h
    6 0110 6h 5 0101 5h
    7 0111 7h 4 0100 4h
    8 1000 8h 12 1100 Ch
    9 1001 9h 13 1101 Dh
    10 1010 Ah 15 1111 Fh
    11 1011 Bh 14 1110 Eh
    12 1100 Ch 10 1010 Ah
    13 1101 Dh 11 1011 Bh
    14 1110 Eh 9 1001 9h
    15 1111 Fh 8 1000 8h

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

    Код Gray-Excess

    Обычный одношаговый Грей-код подходит для разрешений, которые могут быть представлены в виде числа возведенного в степень 2. В случаях где надо реализовать другие разрешения из обычного Грей-кода вырезается и используется средний его участок. Таким образом сохраняется «одношаговость» кода. Однако числовой диапазон начинается не с нуля, а смещяется на определенное значение. При обработке информации от генерируемого сигнала отнимается половина разницы между первоначальным и редуцированным разрешением. Такие разрешения как например 360? для выражения угла часто реализируются этим методом. Так 9-ти битный Грей-код равный 512 шагов, урезанный с обеих сторон на 76 шагов будет равен 360°.

    Множество символов, с помощью которых записывается текст, называется алфавитом .

    Число символов в алфавите – это его мощность .

    Формула определения количества информации: N = 2 b ,

    где N – мощность алфавита (количество символов),

    b – количество бит (информационный вес символа).

    В алфавит мощностью 256 символов можно поместить практически все необходимые символы. Такой алфавит называется достаточным.

    Т.к. 256 = 2 8 , то вес 1 символа – 8 бит.

    Единице измерения 8 бит присвоили название 1 байт:

    1 байт = 8 бит.

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

    Каким же образом текстовая информация представлена в памяти компьютера?

    Удобство побайтового кодирования символов очевидно, поскольку байт - наименьшая адресуемая часть памяти и, следовательно, процессор может обратиться к каждому символу отдельно, выполняя обработку текста. С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации.

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

    Понятно, что это дело условное, можно придумать множество способов кодировки.

    Все символы компьютерного алфавита пронумерованы от 0 до 255. Каждому номеру соответствует восьмиразрядный двоичный код от 00000000 до 11111111. Этот код просто порядковый номер символа в двоичной системе счисления.

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

    Для разных типов ЭВМ используются различные таблицы кодировки.

    Международным стандартом для ПК стала таблица ASCII (читается аски) (Американский стандартный код для информационного обмена).

    Таблица кодов ASCII делится на две части.

    Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111).

    Структура таблицы кодировки ASCII

    Порядковый номер

    Код

    Символ

    0 - 31

    00000000 - 00011111

    Символы с номерами от 0 до 31 принято называть управляющими.
    Их функция – управление процессом вывода текста на экран или печать, подача звукового сигнала, разметка текста и т.п.

    32 - 127

    00100000 - 01111111

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

    128 - 255

    10000000 - 11111111

    Альтернативная часть таблицы (русская).
    Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер.
    Кодовая страница в первую очередь используется для размещения национальных алфавитов, отличных от латинского. В русских национальных кодировках в этой части таблицы размещаются символы русского алфавита.

    Первая половина таблицы кодов ASCII


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

    Для букв русского алфавита также соблюдается принцип последовательного кодирования.

    Вторая половина таблицы кодов ASCII


    К сожалению, в настоящее время существуют пять различных кодировок кириллицы (КОИ8-Р, Windows. MS-DOS, Macintosh и ISO). Из-за этого часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую.

    Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 ("Код обмена информацией, 8-битный"). Эта кодировка применялась еще в 70-ые годы на компьютерах серии ЕС ЭВМ, а с середины 80-х стала использоваться в первых русифицированных версиях операционной системы UNIX.

    От начала 90-х годов, времени господства операционной системы MS DOS, остается кодировка CP866 ("CP" означает "Code Page", "кодовая страница").

    Компьютеры фирмы Apple, работающие под управлением операционной системы Mac OS, используют свою собственную кодировку Mac.

    Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.

    Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251.

    С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode . Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.

    Попробуем с помощью таблицы ASCII представить, как будут выглядеть слова в памяти компьютера.

    Внутреннее представление слов в памяти компьютера

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

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

    Тема: Информация вокруг нас

    Урок: Кодирование информации. Двоичное кодирование. Единицы измерения информации

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

    1. Кодирование как изменение формы представления информации.

    2. Как компьютер распознает информацию?

    3. Как измерить информацию?

    4. Единицы измерения информации.

    В мире кодов

    Зачем люди кодируют информацию?

    1. Скрыть ее от других (зеркальная тайнопись Леонардо да Винчи, военные шифровки).

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

    3. Для более легкой обработки и передачи (азбука Морзе, перевод в электрические сигналы - машинные коды).

    Кодирование - это представление информации с помощью некоторого кода.

    Код - это система условных знаков для представления информации.

    Способы кодирования информации

    1. Графический (см. Рис. 1) (с помощью рисунков и знаков).

    Рис. 1. Система сигнальных флагов (Источник)

    2. Числовой (с помощью чисел).

    Например: 11001111 11100101.

    3. Символьный (с помощью символов алфавита).

    Например: НКМБМ ЧГЁУ.

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

    Средством кодирования и декодирования служит кодовая таблица соответствия. Например, соответствие в различных системах счисления - 24 - XXIV, соответствие алфавита каким-либо символам (Рис. 2).


    Рис. 2. Пример шифра (Источник)

    Примеры кодирования информации

    Примером кодирования информации является азбука Морзе (см. Рис. 3).

    Рис. 3. Азбука Морзе ()

    В азбуке Морзе используется всего 2 символа - точка и тире (короткий и длинный звук).

    Еще одним примером кодирования информации является флажковая азбука (см. Рис. 4).

    Рис. 4. Флажковая азбука ()

    Также примером является азбука флагов (см. Рис. 5).

    Рис. 5. Азбука флагов ()

    Всем известный пример кодирования - нотная азбука (см. Рис. 6).

    Рис. 6. Нотная азбука ()

    Рассмотрим следующую задачу:

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

    Рис. 7

    Старший помощник Лом сдает экзамен капитану Врунгелю. Помогите ему прочитать следующий текст (см. Рис. 8):

    Вокруг нас существуют преимущественно два сигнала, например:

    Светофор: красный - зеленый;

    Вопрос: да - нет;

    Лампа: горит - не горит;

    Можно - нельзя;

    Хорошо - плохо;

    Истина - ложь;

    Вперед - назад;

    Есть - нет;

    Всё это сигналы, обозначающие количество информации в 1 бит.

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

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

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

    Это электрические сигналы: проходит ток или не проходит ток.

    Машинный двоичный язык - последовательность "0" и "1". Каждое двоичное число может принимать значение 0 или 1.

    Каждая цифра машинного двоичного кода несет количество информации, равное 1 бит.

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

    Строка из 8 битов называется б айт . Эту строку компьютер обрабатывает как отдельный символ (число, букву).

    Рассмотрим пример. Слово ALICE состоит из 5 букв, каждая из которых на языке компьютера представлена одним байтом (см. Рис. 10). Стало быть, Alice можно измерить как 5 байт.

    Рис. 10. Двоичный код (Источник)

    Кроме бита и байта, существуют и другие единицы измерения информации.

    Список литературы

    1. Босова Л.Л. Информатика и ИКТ: Учебник для 5 класса. - М.: БИНОМ. Лаборатория знаний, 2012.

    2. Босова Л.Л. Информатика: Рабочая тетрадь для 5 класса. - М.: БИНОМ. Лаборатория знаний, 2010.

    3. Босова Л.Л., Босова А.Ю. Уроки информатики в 5-6 классах: Методическое пособие. - М.: БИНОМ. Лаборатория знаний, 2010.

    2. Фестиваль "Открытый урок" ().

    Домашнее задание

    1. §1.6, 1.7 (Босова Л.Л. Информатика и ИКТ: Учебник для 5 класса).

    2. Стр. 28, задания 1, 4; стр. 30, задания 1, 4, 5, 6 (Босова Л.Л. Информатика и ИКТ: Учебник для 5 класса).

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

    Для преобразования текста в бинарное представление введите текст в левое окошко и нажмите TEXT->BIN в правом окошке появится его двоичное представление.

    Для преобразования бинарного кода в текст введите кода в правое окошко и нажмите BIN->TEXT в левом окошке появится его символьное представление.

    В случае, если перевод бинарного кода в текст или наоборот не получился - проверьте корректность ваших данных!

    Обновление!

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

    в нормальный вид. Для этого нужно поставить галочку: "Заменить 0 пробелами, а 1 заполнителем █". Затем вставьте текст в правое окошко: "Текст в бинарном представлении" и нажмите кнопку под ним "BIN->TEXT".

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

    ██ █ █ ███████ █ ██ ██ █ █ ███ ██ █ █ ██ █ ██ █ █ ██ █ ███ █ ██ █ █ ██ █ █ ███ ██ █ █ ███ ██ █ ██

    а на красном фоне:

    ██ █ █ ███████ █ ██ ██ █ █ ███ ██ █ █ ██ █ ██ █ █ ██ █ ███ █ ██ █ █ ██ █ █ ███ ██ █ █ ███ ██ █ ██

    видите сколько пробелов в конце можно потерять?

    Обзор