Разрядность двоичного кода, Преобразование информации из непрерывной формы в дискретную, Универсальность двоичного кодирования, Равномерные и неравномерные коды, Информатика 7 класс Босова, Информатика 7 класс
1.5.1. Преобразование информации из непрерывной формы в дискретную
Для решения своих задач человеку часто приходится преобразовывать имеющуюся информацию из одной формы представления в другую. Например, при чтении вслух происходит преобразование информации из дискретной (текстовой) формы в непрерывную (звук). Во время диктанта на уроке русского языка, наоборот, происходит преобразование информации из непрерывной формы (голос учителя) в дискретную (записи учеников).
Информация, представленная в дискретной форме, значительно проще для передачи, хранения или автоматической обработки. Поэтому в компьютерной технике большое внимание уделяется методам преобразования информации из непрерывной формы в дискретную.
Дискретизация информации - процесс преобразования информации из непрерывной формы представления в дискретную.
Рассмотрим суть процесса дискретизации информации на примере.
На метеорологических станциях имеются самопишущие приборы для непрерывной записи атмосферного давления . Результатом их работы являются барограммы - кривые, показывающие, как изменялось давление в течение длительных промежутков времени. Одна из таких кривых, вычерченная прибором в течение семи часов проведения наблюдений, показана на рис. 1.9.
На основании полученной информации можно построить таблицу, содержащую показания прибора в начале измерений и на конец каждого часа наблюдений (рис. 1.10).
Полученная таблица даёт не совсем полную картину того, как изменялось давление за время наблюдений: например, не указано самое большое значение давления, имевшее место в течение четвёртого часа наблюдений. Но если занести в таблицу значения давления, наблюдаемые каждые полчаса или 15 минут, то новая таблица будет давать более полное представление о том, как изменялось давление.
Таким образом, информацию, представленную в непрерывной форме (барограмму, кривую), мы с некоторой потерей точности преобразовали в дискретную форму (таблицу).
В дальнейшем вы познакомитесь со способами дискретного представления звуковой и графической информации.
Цепочки из трёх двоичных символов получаются дополнением двухразрядных двоичных кодов справа символом 0 или 1. В итоге кодовых комбинаций из трёх двоичных символов получается 8 - вдвое больше, чем из двух двоичных символов:
Соответственно, четырёхразрядйый двоичный позволяет получить 16 кодовых комбинаций, пятиразрядный - 32, шестиразрядный - 64 и т. д. Длину двоичной цепочки - количество символов в двоичном коде - называют разрядностью двоичного кода.
Обратите внимание, что:
4 = 2 * 2,
8 = 2 * 2 * 2,
16 = 2 * 2 * 2 * 2,
32 = 2 * 2 * 2 * 2 * 2 и т. д.
Здесь количество кодовых комбинаций представляет собой произведение некоторого количества одинаковых множителей, равного разрядности двоичного кода.
Если количество кодовых комбинаций обозначить буквой N, а разрядность двоичного кода - буквой i, то выявленная закономерность в общем виде будет записана так:
N = 2 * 2 * ... * 2.
i множителей
В математике такие произведения записывают в виде:
N = 2 i .
Запись 2 i читают так: «2 в i-й степени».
Задача. Вождь племени Мульти поручил своему министру разработать двоичный и перевести в него всю важную информацию . Двоичный какой разрядности потребуется, если алфавит, используемый племенем Мульти, содержит 16 символов? Выпишите все кодовые комбинации.
Решение. Так как алфавит племени Мульти состоит из 16 символов, то и кодовых комбинаций им нужно 16. В этом случае длина (разрядность) двоичного кода определяется из соотношения: 16 = 2 i . Отсюда i = 4.
Чтобы выписать все кодовые комбинации из четырёх 0 и 1, воспользуемся схемой на рис. 1.13: 0000, 0001, 0010, 0011, 0100, 0101, 0110,0111,1000,1001,1010,1011,1100,1101,1110,1111.
1.5.3. Универсальность двоичного кодирования
В начале этого параграфа вы узнали, что, представленная в непрерывной форме, может быть выражена с помощью символов некоторого естественного или формального языка. В свою очередь, символы произвольного алфавита могут быть преобразованы в двоичный. Таким образом, с помощью двоичного кода может быть представлена любая на естественных и формальных языках, а также изображения и звуки (рис. 1.14). Это и означает универсальность двоичного кодирования.
Двоичные коды широко используются в компьютерной технике, требуя только двух состояний электронной схемы - «включено» (это соответствует цифре 1) и «выключено» (это соответствует цифре 0).
Простота технической реализации - главное достоинство двоичного кодирования. Недостаток двоичного кодирования - большая длина получаемого кода.
1.5.4. Равномерные и неравномерные коды
Различают равномерные и неравномерные коды. Равномерные коды в кодовых комбинациях содержат одинаковое число символов, неравномерные - разное.
Выше мы рассмотрели равномерные двоичные коды.
Примером неравномерного кода может служить азбука Морзе, в которой для каждой буквы и цифры определена последовательность коротких и длинных сигналов. Так, букве Е соответствует короткий сигнал («точка»), а букве Ш - четыре длинных сигнала (четыре «тире»). Неравномерное позволяет повысить скорость передачи сообщений за счёт того, что наиболее часто встречающиеся в передаваемой информации символы имеют самые короткие кодовые комбинации.
Информация, которую дает этот символ, равна энтропии системы и максимальна в случае, когда оба состояния равновероятны; в этом случае элементарный символ передает информацию 1 (дв. ед.). Поэтому основой оптимального кодирования будет требование, чтобы элементарные символы в закодированном тексте встречались в среднем одинаково часто.
Изложим здесь способ построения кода, удовлетворяющего поставленному условию; этот способ известен под названием «кода Шеннона - Фэно». Идея его состоит в том, что кодируемые символы (буквы или комбинации букв) разделяются на две приблизительно равновероятные группы: для первой группы символов на первом месте комбинации ставится 0 (первый знак двоичного числа, изображающего символ); для второй группы - 1. Далее каждая группа снова делится на две приблизительно равновероятные подгруппы; для символов первой подгруппы на втором месте ставится нуль; для второй подгруппы - единица и т. д.
Продемонстрируем принцип построения кода Шеннона - Фэно на материале русского алфавита (табл. 18.8.1). Отсчитаем первые шесть букв (от «-» до «т»); суммируя их вероятности (частоты), получим 0,498; на все остальные буквы (от «н» до «сф») придется приблизительно такая же вероятность 0,502. Первые шесть букв (от «-» до «т») будут иметь на первом месте двоичный знак 0. Остальные буквы (от «н» до «ф») будут иметь на первом месте единицу. Далее снова разделим первую группу на две приблизительно равновероятные подгруппы: от «-» до «о» и от «е» до «т»; для всех букв первой подгруппы на втором месте поставим нуль, а второй подгруппы"- единицу. Процесс будем продолжать до тех пор, пока в каждом подразделении не останется ровно одна буква, которая и будет закодирована определенным двоичным числом. Механизм построения кода показан на таблице 18.8.2, а сам код приведен в таблице 18.8.3.
Таблица 18.8.2.
Двоичные знаки |
|||||||||
Таблица 18.8.3
С помощью таблицы 18.8.3 можно закодировать и декодировать любое сообщение.
В виде примера запишем двоичным кодом фразу: «теория информации»
01110100001101000110110110000
0110100011111111100110100
1100001011111110101100110
Заметим, что здесь нет необходимости отделять друг от друга буквы специальным знаком, так как и без этого декодирование выполняется однозначно. В этом можно убедиться, декодируя с помощью таблицы 18.8.2 следующую фразу:
10011100110011001001111010000
1011100111001001101010000110101
010110000110110110
(«способ кодирования»).
Однако необходимо отметить, что любая ошибка при кодировании (случайное перепутывание знаков 0 и 1) при таком коде губительна, так как декодирование всего следующего за ошибкой текста становится невозможным. Поэтому данный принцип кодирования может быть рекомендован только в случае, когда ошибки при кодировании и передаче сообщения практически исключены.
Возникает естественный вопрос: а является ли составленный нами код при отсутствии ошибок действительно оптимальным? Для того чтобы ответить на этот вопрос, найдем среднюю информацию, приходящуюся на один элементарный символ (0 или 1), и сравним ее с максимально возможной информацией, которая равна одной двоичной единице. Для этого найдем сначала среднюю информацию, содержащуюся в одной букве передаваемого текста, т. е. энтропию на одну букву:
,
где - вероятность того, что буква примет определенное состояние («-», о, е, а,…, ф).
Из табл. 18.8.1 имеем
(дв. единиц на букву текста).
По таблице 18.8.2 определяем среднее число элементарных символов на букву
Деля энтропию на, получаем информацию на один элементарный символ
(дв. ед.).
Таким образом, информация на один символ весьма близка к своему верхнему пределу 1, а выбранный нами код весьма близок к оптимальному. Оставаясь в пределах задачи кодирования по буквам, мы ничего лучшего получить не сможем.
Заметим, что в случае кодирования просто двоичных номеров букв мы имели бы изображение каждой буквы пятью двоичными знаками и информация на один символ была бы
(дв. ед.),
т. е. заметно меньше, чем при оптимальном буквенном кодировании.
Однако надо заметить, что кодирование «по буквам» вообще не является экономичным. Дело в том, что между соседними буквами любого осмысленного текста всегда имеется зависимость. Например, после гласной буквы в русском языке не может стоять «ъ» или «ь»; после шипящих не могут стоять «я» или «ю»; после нескольких согласных подряд увеличивается вероятность гласной и т. д.
Мы знаем, что при объединении зависимых систем суммарная энтропия меньше суммы энтропий отдельных систем; следовательно, информация, передаваемая отрезком связного текста, всегда меньше, чем информация на один символ, умноженная на число символов. С учетом этого обстоятельства более экономный код можно построить, если кодировать не каждую букву в отдельности, а целые «блоки» из букв. Например, в русском тексте имеет смысл кодировать целиком некоторые часто встречающиеся комбинации букв, как «тся», «ает», «ние» и т. п. Кодируемые блоки располагаются в порядке убывания частот, как буквы в табл. 18.8.1, а двоичное кодирование осуществляется по тому же принципу.
В ряде случаев оказывается разумным кодировать даже не блоки из букв, а целые осмысленные куски текста. Например, для разгрузки телеграфа в предпраздничные дни целесообразно кодировать условными номерами целые стандартные тексты, вроде:
«поздравляю новым годом желаю здоровья успехов работе».
Не останавливаясь специально на методах кодирования блоками, ограничимся тем, что сформулируем относящуюся сюда теорему Шеннона.
Пусть имеется источник информации и приемник, связанные каналом связи (рис. 18.8.1).
Известна производительность источника информации, т. е. среднее количество двоичных единиц информации, поступающее от источника в единицу времени (численно оно равно средней энтропии сообщения, производимого источникам в единицу времени). Пусть, кроме того, известна пропускная способность канала, т. е. максимальное количество информации (например, двоичных знаков 0 или 1), которое способен передать канал в ту же единицу времени. Возникает вопрос: какова должна быть пропускная способность канала, чтобы он «справлялся» со своей задачей, т. е. чтобы информация от источника к приемнику поступала без задержки?
Ответ на этот вопрос дает первая теорема Шеннона. Сформулируем ее здесь без доказательства.
1-я теорема Шеннона
Если пропускная способность канала связи больше энтропии источника информации в единицу времени
то всегда можно закодировать достаточно длинное сообщение так, чтобы оно передавалось каналом связи без задержки. Если же, напротив,
то передача информации без задержек невозможна.
Термин «бинарный» по смыслу – состоящий из двух частей, компонентов. Таким образом бинарные коды это коды которые состоят только из двух символьных состояний например черный или белый, светлый или темный, проводник или изолятор. Бинарный код в цифровой технике это способ представления данных (чисел, слов и других) в виде комбинации двух знаков, которые можно обозначить как 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°.
Всем известно, что компьютеры могут выполнять вычисления с большими группами данных на огромной скорости. Но не все знают, что эти действия зависят всего от двух условий: есть или нет ток и какое напряжение.
Каким же образом компьютер умудряется обрабатывать такую разнообразную информацию?
Секрет заключается в двоичной системе исчисления. Все данные поступают в компьютер, представленные в виде единиц и нулей, каждому из которых соответствует одно состояние электропровода: единицам - высокое напряжение, нулям - низкое или же единицам - наличие напряжения, нулям - его отсутствие. Преобразование данных в нули и единицы называется двоичной конверсией, а окончательное их обозначение - двоичным кодом.
В десятичном обозначении, основанном на десятичной системе исчисления, которая используется в повседневной жизни, числовое значение представлено десятью цифрами от 0 до 9, и каждое место в числе имеет ценность в десять раз выше, чем место справа от него. Чтобы представить число больше девяти в десятичной системе исчисления, на его место ставится ноль, а на следующее, более ценное место слева - единица. Точно так же в двоичной системе, где используются только две цифры - 0 и 1, каждое место в два раза ценнее, чем место справа от него. Таким образом, в двоичном коде только ноль и единица могут быть изображены как одноместные числа, и любое число, больше единицы, требует уже два места. После ноля и единицы следующие три двоичных числа это 10 (читается один-ноль) и 11 (читается один-один) и 100 (читается один-ноль-ноль). 100 двоичной системы эквивалентно 4 десятичной. На верхней таблице справа показаны другие двоично-десятичные эквиваленты.
Любое число может быть выражено в двоичном коде, просто оно займет больше места, чем в десятичном обозначении. В двоичной системе можно записать и алфавит, если за каждой буквой закрепить определенное двоичное число.
Две цифры на четыре места
16 комбинаций можно составить, используя темные и светлые шары, комбинируя их в наборах из четырех штук Если темные шары принять за нули, а светлые за единицы, то и 16 наборов окажутся 16-единичным двоичным кодом, числовая ценность которого составляет от нуля до пяти (см. верхнюю таблицу на стр. 27). Даже с двумя видами шаров в двоичной системе можно построить бесконечное количество комбинаций, просто увеличивая число шариков в каждой группе - или число мест в числах.
Биты и байты
Самая маленькая единица в компьютерной обработке, бит - это единица данных, которая может обладать одним из двух возможных условий. К примеру, каждая из единиц и нулей (справа) означает 1 бит. Бит можно представить и другими способами: наличием или отсутствием электрического тока, дырочкой и ее отсутствием, направлением намагничивания вправо или влево. Восемь битов составляют байт. 256 возможных байтов могут представить 256 знаков и символов. Многие компьютеры обрабатывают байт данных одновременно.
Двоичная конверсия. Четырехцифровой двоичный код может представить десятичные числа от 0 до 15.
Кодовые таблицы
Когда двоичный код используется для обозначения букв алфавита или пунктуационных знаков, требуются кодовые таблицы, в которых указано, какой код какому символу соответствует. Составлено несколько таких кодов. Большинство ПК приспособлено под семицифровой код, называемый ASCII, или американский стандартный код для информационного обмена. На таблице справа показаны коды ASCII для английского алфавита. Другие коды предназначаются для тысяч символов и алфавитов других языков мира.
Часть таблицы кода ASCII
Множество символов, с помощью которых записывается текст, называется алфавитом .
Число символов в алфавите – это его мощность .
Формула определения количества информации: 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 |
Стандартная часть таблицы (английский). Сюда входят строчные и прописные буквы латинского алфавита, десятичные цифры, знаки препинания, всевозможные скобки, коммерческие и другие символы. |
128 - 255 |
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 представить, как будут выглядеть слова в памяти компьютера.
Внутреннее представление слов в памяти компьютера
Иногда бывает так, что текст, состоящий из букв русского алфавита, полученный с другого компьютера, невозможно прочитать - на экране монитора видна какая-то "абракадабра". Это происходит оттого, что на компьютерах применяется разная кодировка символов русского языка.
Все символы и буквы могут быть закодированы при помощи восьми двоичных бит. Наиболее распространенными таблицами представления букв в двоичном коде являются ASCII и ANSI, их можно использовать для записи текстов в микропроцессорах. В таблицах ASCII и ANSI первые 128 символов совпадают. В этой части таблицы содержатся коды цифр, знаков препинания, латинские буквы верхнего и нижнего регистров и управляющие символы. Национальные расширения символьных таблиц и символы псевдографики содержатся в последних 128 кодах этих таблиц, поэтому русские тексты в операционных системах DOS и WINDOWS не совпадают.
При первом знакомстве с компьютерами и микропроцессорами может возникнуть вопрос — "как преобразовать текст в двоичный код?" Однако это преобразование является наиболее простым действием! Для этого нужно воспользоваться любым текстовым редактором. В том числе подойдет и простейшая программа notepad, входящая в состав операционной системы Windows. Подобные же редакторы присутствуют во всех средах программирования для языков, таких как СИ, Паскаль или Ява. Следует отметить, что наиболее распространенный текстовый редактор Word для простого преобразования текста в двоичный код не подходит. Этот тестовый редактор вводит огромное количество дополнительной информации, такой как цвет букв, наклон, подчеркивание, язык, на котором написана конкретная фраза, шрифт.
Следует отметить, что на самом деле комбинация нулей и единиц, при помощи которых кодируется текстовая информация двоичным кодом не является, т.к. биты в этом коде не подчиняются законам . Однако в Интернете поисковая фраза "представление букв в двоичном коде" является самой распространенной. В таблице 1 приведено соответствие двоичных кодов буквам латинского алфавита. Для краткости записи в этой таблице последовательность нулей и единиц представлена в десятичном и шестнадцатеричном кодах.
Таблица 1 Таблица представления латинских букв в двоичном коде (ASCII)
Десятичный код | Шестнадцатеричный код | Отображаемый символ | Значение |
---|---|---|---|
0 | 00 | NUL | |
1 | 01 | ☺ | (слово управления дисплеем) |
2 | 02 | ☻ | (Первое передаваемое слово) |
3 | 03 | ETX (Последнее слово передачи) | |
4 | 04 | ♦ | EOT (конец передачи) |
5 | 05 | ♣ | ENQ (инициализация) |
6 | 06 | ♠ | ACK (подтверждение приема) |
7 | 07 | BEL | |
8 | 08 | ◘ | BS |
9 | 09 | ○ | HT (горизонтальная табуляция |
10 | 0A | ◙ | LF (перевод строки) |
11 | 0B | ♂ | VT (вертикальная табуляция) |
12 | 0С | ♀ | FF (следующая страница) |
13 | 0D | ♪ | CR (возврат каретки) |
14 | 0E | ♫ | SO (двойная ширина) |
15 | 0F | ☼ | SI (уплотненная печать) |
16 | 10 | DLE | |
17 | 11 | ◄ | DC1 |
18 | 12 | ↕ | DC2 (отмена уплотненной печати) |
19 | 13 | ‼ | DC3 (готовность) |
20 | 14 | ¶ | DC4 (отмена двойной ширины) |
21 | 15 | § | NAC (неподтверждение приема) |
22 | 16 | ▬ | SYN |
23 | 17 | ↨ | ETB |
24 | 18 | CAN | |
25 | 19 | ↓ | EM |
26 | 1A | → | SUB |
27 | 1B | ← | ESC (начало управл. послед.) |
28 | 1C | ∟ | FS |
29 | 1D | ↔ | GS |
30 | 1E | ▲ | RS |
31 | 1F | ▼ | US |
32 | 20 | Пробел | |
33 | 21 | ! | Восклицательный знак |
34 | 22 | « | Угловая скобка |
35 | 23 | # | Знак номера |
36 | 24 | $ | Знак денежной единицы (доллар) |
37 | 25 | % | Знак процента |
38 | 26 | & | Амперсанд |
39 | 27 | " | Апостроф |
40 | 28 | ( | Открывающая скобка |
41 | 29 | ) | Закрывающая скобка |
42 | 2A | * | Звездочка |
43 | 2B | + | Знак плюс |
44 | 2C | , | Запятая |
45 | 2D | - | Знак минус |
46 | 2E | . | Точка |
47 | 2F | / | Дробная черта |
48 | 30 | 0 | Цифра ноль |
49 | 31 | 1 | Цифра один |
50 | 32 | 2 | Цифра два |
51 | 33 | 3 | Цифра три |
52 | 34 | 4 | Цифра четыре |
53 | 35 | 5 | Цифра пять |
54 | 36 | 6 | Цифра шесть |
55 | 37 | 7 | Цифра семь |
56 | 38 | 8 | Цифра восемь |
57 | 39 | 9 | Цифра девять |
58 | 3A | : | Двоеточие |
59 | 3B | ; | Точка с запятой |
60 | 3C | < | Знак меньше |
61 | 3D | = | Знак равно |
62 | 3E | > | Знак больше |
63 | 3F | ? | Знак вопрос |
64 | 40 | @ | Коммерческое эт |
65 | 41 | A | Прописная латинская буква А |
66 | 42 | B | Прописная латинская буква B |
67 | 43 | C | Прописная латинская буква C |
68 | 44 | D | Прописная латинская буква D |
69 | 45 | E | Прописная латинская буква E |
70 | 46 | F | Прописная латинская буква F |
71 | 47 | G | Прописная латинская буква G |
72 | 48 | H | Прописная латинская буква H |
73 | 49 | I | Прописная латинская буква I |
74 | 4A | J | Прописная латинская буква J |
75 | 4B | K | Прописная латинская буква K |
76 | 4C | L | Прописная латинская буква L |
77 | 4D | M | Прописная латинская буква |
78 | 4E | N | Прописная латинская буква N |
79 | 4F | O | Прописная латинская буква O |
80 | 50 | P | Прописная латинская буква P |
81 | 51 | Q | Прописная латинская буква |
82 | 52 | R | Прописная латинская буква R |
83 | 53 | S | Прописная латинская буква S |
84 | 54 | T | Прописная латинская буква T |
85 | 55 | U | Прописная латинская буква U |
86 | 56 | V | Прописная латинская буква V |
87 | 57 | W | Прописная латинская буква W |
88 | 58 | X | Прописная латинская буква X |
89 | 59 | Y | Прописная латинская буква Y |
90 | 5A | Z | Прописная латинская буква Z |
91 | 5B | [ | Открывающая квадратная скобка |
92 | 5C | \ | Обратная черта |
93 | 5D | ] | Закрывающая квадратная скобка |
94 | 5E | ^ | "Крышечка" |
95 | 5 | _ | Символ подчеркивания |
96 | 60 | ` | Апостроф |
97 | 61 | a | Строчная латинская буква a |
98 | 62 | b | Строчная латинская буква b |
99 | 63 | c | Строчная латинская буква c |
100 | 64 | d | Строчная латинская буква d |
101 | 65 | e | Строчная латинская буква e |
102 | 66 | f | Строчная латинская буква f |
103 | 67 | g | Строчная латинская буква g |
104 | 68 | h | Строчная латинская буква h |
105 | 69 | i | Строчная латинская буква i |
106 | 6A | j | Строчная латинская буква j |
107 | 6B | k | Строчная латинская буква k |
108 | 6C | l | Строчная латинская буква l |
109 | 6D | m | Строчная латинская буква m |
110 | 6E | n | Строчная латинская буква n |
111 | 6F | o | Строчная латинская буква o |
112 | 70 | p | Строчная латинская буква p |
113 | 71 | q | Строчная латинская буква q |
114 | 72 | r | Строчная латинская буква r |
115 | 73 | s | Строчная латинская буква s |
116 | 74 | t | Строчная латинская буква t |
117 | 75 | u | Строчная латинская буква u |
118 | 76 | v | Строчная латинская буква v |
119 | 77 | w | Строчная латинская буква w |
120 | 78 | x | Строчная латинская буква x |
121 | 79 | y | Строчная латинская буква y |
122 | 7A | z | Строчная латинская буква z |
123 | 7B | { | Открывающая фигурная скобка |
124 | 7С | | | Вертикальная черта |
125 | 7D | } | Закрывающая фигурная скобка |
126 | 7E | ~ | Тильда |
127 | 7F | ⌂ |
В классическом варианте таблицы символов ASCII нет русских букв и она состоит из 7 бит. Однако в дальнейшем эта таблица была расширена до 8 бит и в старших 128 строках появились русские буквы в двоичном коде и символы псевдографики. В общем случае во второй части размещены национальные алфавиты разных стран и русские буквы там просто один из возможных наборов (855) там может быть французская (863), немецкая (1141) или греческая (737) таблица. В таблице 2 приведен пример представления русских букв в двоичном коде.
Таблица 2. Таблица представления русских букв в двоичном коде (ASCII)
Десятичный код | Шестнадцатеричный код | Отображаемый символ | Значение |
---|---|---|---|
128 | 80 | А | Прописная русская буква А |
129 | 81 | Б | Прописная русская буква Б |
130 | 82 | В | Прописная русская буква В |
131 | 83 | Г | Прописная русская буква Г |
132 | 84 | Д | Прописная русская буква Д |
133 | 85 | Е | Прописная русская буква Е |
134 | 86 | Ж | Прописная русская буква Ж |
135 | 87 | З | Прописная русская буква З |
136 | 88 | И | Прописная русская буква И |
137 | 89 | Й | Прописная русская буква Й |
138 | 8A | К | Прописная русская буква К |
139 | 8B | Л | Прописная русская буква Л |
140 | 8C | М | Прописная русская буква М |
141 | 8D | Н | Прописная русская буква Н |
142 | 8E | О | Прописная русская буква О |
143 | 8F | П | Прописная русская буква П |
144 | 90 | Р | Прописная русская буква Р |
145 | 91 | С | Прописная русская буква С |
146 | 92 | Т | Прописная русская буква Т |
147 | 93 | У | Прописная русская буква У |
148 | 94 | Ф | Прописная русская буква Ф |
149 | 95 | Х | Прописная русская буква Х |
150 | 96 | Ц | Прописная русская буква Ц |
151 | 97 | Ч | Прописная русская буква Ч |
152 | 98 | Ш | Прописная русская буква Ш |
153 | 99 | Щ | Прописная русская буква Щ |
154 | 9A | Ъ | Прописная русская буква Ъ |
155 | 9B | Ы | Прописная русская буква Ы |
156 | 9C | Ь | Прописная русская буква Ь |
157 | 9D | Э | Прописная русская буква Э |
158 | 9E | Ю | Прописная русская буква Ю |
159 | 9F | Я | Прописная русская буква Я |
160 | A0 | а | Строчная русская буква а |
161 | A1 | б | Строчная русская буква б |
162 | A2 | в | Строчная русская буква в |
163 | A3 | г | Строчная русская буква г |
164 | A4 | д | Строчная русская буква д |
165 | A5 | е | Строчная русская буква е |
166 | A6 | ж | Строчная русская буква ж |
167 | A7 | з | Строчная русская буква з |
168 | A8 | и | Строчная русская буква и |
169 | A9 | й | Строчная русская буква й |
170 | AA | к | Строчная русская буква к |
171 | AB | л | Строчная русская буква л |
172 | AC | м | Строчная русская буква м |
173 | AD | н | Строчная русская буква н |
174 | AE | о | Строчная русская буква о |
175 | AF | п | Строчная русская буква п |
176 | B0 | ░ | |
177 | B1 | ▒ | |
178 | B2 | ▓ | |
179 | B3 | │ | Символ псевдографики |
180 | B4 | ┤ | Символ псевдографики |
181 | B5 | ╡ | Символ псевдографики |
182 | B6 | ╢ | Символ псевдографики |
183 | B7 | ╖ | Символ псевдографики |
184 | B8 | ╕ | Символ псевдографики |
185 | B9 | ╣ | Символ псевдографики |
186 | BA | ║ | Символ псевдографики |
187 | BB | ╗ | Символ псевдографики |
188 | BC | ╝ | Символ псевдографики |
189 | BD | ╜ | Символ псевдографики |
190 | BE | ╛ | Символ псевдографики |
191 | BF | ┐ | Символ псевдографики |
192 | C0 | └ | Символ псевдографики |
193 | C1 | ┴ | Символ псевдографики |
194 | C2 | ┬ | Символ псевдографики |
195 | C3 | ├ | Символ псевдографики |
196 | C4 | ─ | Символ псевдографики |
197 | C5 | ┼ | Символ псевдографики |
198 | C6 | ╞ | Символ псевдографики |
199 | C7 | ╟ | Символ псевдографики |
200 | C8 | ╚ | Символ псевдографики |
201 | C9 | ╔ | Символ псевдографики |
202 | CA | ╩ | Символ псевдографики |
203 | CB | ╦ | Символ псевдографики |
204 | CC | ╠ | Символ псевдографики |
205 | CD | ═ | Символ псевдографики |
206 | CE | ╬ | Символ псевдографики |
207 | CF | ╧ | Символ псевдографики |
208 | D0 | ╨ | Символ псевдографики |
209 | D1 | ╤ | Символ псевдографики |
210 | D2 | ╥ | Символ псевдографики |
211 | D3 | ╙ | Символ псевдографики |
212 | D4 | ╘ | Символ псевдографики |
213 | D5 | ╒ | Символ псевдографики |
214 | D6 | ╓ | Символ псевдографики |
215 | D7 | ╫ | Символ псевдографики |
216 | D8 | ╪ | Символ псевдографики |
217 | D9 | ┘ | Символ псевдографики |
218 | DA | ┌ | Символ псевдографики |
219 | DB | █ | |
220 | DC | ▄ | |
221 | DD | ▌ | |
222 | DE | ▐ | |
223 | DF | ▀ | |
224 | E0 | р | Строчная русская буква р |
225 | E1 | с | Строчная русская буква с |
226 | E2 | т | Строчная русская буква т |
227 | E3 | у | Строчная русская буква у |
228 | E4 | ф | Строчная русская буква ф |
229 | E5 | х | Строчная русская буква х |
230 | E6 | ц | Строчная русская буква ц |
231 | E7 | ч | Строчная русская буква ч |
232 | E8 | ш | Строчная русская буква ш |
233 | E9 | щ | Строчная русская буква щ |
234 | EA | ъ | Строчная русская буква ъ |
235 | EB | ы | Строчная русская буква ы |
236 | EC | ь | Строчная русская буква ь |
237 | ED | э | Строчная русская буква э |
238 | EE | ю | Строчная русская буква ю |
239 | EF | я | Строчная русская буква я |
240 | F0 | Ё | Прописная русская буква Ё |
241 | F1 | ё | Строчная русская буква ё |
242 | F2 | Є | |
243 | F3 | є | |
244 | F4 | Ї | |
245 | F5 | Ї | |
246 | F6 | Ў | |
247 | F7 | ў | |
248 | F8 | ° | Знак градуса |
249 | F9 | ∙ | Знак умножения (точка) |
250 | FA | · | |
251 | FB | √ | Радикал (взятие корня) |
252 | FC | № | Знак номера |
253 | FD | ¤ | Знак денежной единицы (рубль) |
254 | FE | ■ | |
255 | FF |
При записи текстов кроме двоичных кодов, непосредственно отображающих буквы, применяются коды, обозначающие переход на новую строку и возврат курсора (возврат каретки) на нулевую позицию строки. Эти символы обычно применяются вместе. Их двоичные коды соответствуют десятичным числам — 10 (0A) и 13 (0D). В качестве примера ниже приведен участок текста данной страницы (дамп памяти). На этом участке записан ее первый абзац. Для отображения информации в дампе памяти применен следующий формат:
- в первой колонке записан двоичный адрес первого байта строки
- в следующи шестнадцати колонках записаны байты, содержащиеся в текстовом файле. Для более удобного определения номера байта после восьмой колонки проведена вертикальная линия. Байты, для краткости записи, представлены в шестнадцатеричном коде.
- в последней колонке эти же байты представлены в виде отображаемых буквенных символов
В приведенном примере видно, что первая строка текста занимает 80 байт. Первый байт 82 соответствует букве "В". Второй байт E1 соответствует букве "с". Третий байт A5 соответствует букве "е". Следующий байт 20 отображает пустой промежуток между словами (пробел) " ". 81 и 82 байты содержат символы возврата каретки и перевода строки 0D 0A. Эти символы мы находим по двоичному адресу 00000050: Следующая строка исходного текста не кратна 16 (ее длина равна 76 буквам), поэтому для того, чтобы найти ее конец потребуется сначала найти строку 000000E0: и от нее отсчитать девять колонок. Там снова записаны байты возврата каретки и перевода строки 0D 0A. Остальной текст анализируется точно таким же образом.
Дата последнего обновления файла 04.12.2018
Литература:
Вместе со статьей "Запись текстов двоичным кодом" читают:
Представление двоичных чисел в памяти компьютера или
микроконтроллера
http://сайт/proc/IntCod.php
Иногда бывает удобно хранить числа в памяти процессора в десятичном
виде
http://сайт/proc/DecCod.php
Стандартные форматы чисел
с плавающей запятой для компьютеров и микроконтроллеров
http://сайт/proc/float/
В настоящее время и в технике и в быту широко используются как
позиционные, так и непозиционные системы счисления.
.php