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


Минимальные единицы измерения информации – это бит и байт.

Один бит позволяет закодировать 2 значения (0 или 1).

Используя два бита, можно закодировать 4 значения: 00, 01, 10, 11.

Тремя битами кодируются 8 разных значений: 000, 001, 010, 011, 100, 101, 110, 111.

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

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

1 бит кодирует     —> 2 разных значения    (21 = 2),

2 бита кодируют —> 4 разных значения    (22 = 4),

3 бита кодируют —> 8 разных значений    (23 = 8),

4 бита кодируют —> 16 разных значений   (24 = 16),

5 бит кодируют   —> 32 разных значения   (25 = 32),

6 бит кодируют   —> 64 разных значения   (26 = 64),

7 бит кодируют   —> 128 разных значения (27 = 128),

8 бит кодируют    —> 256 разных значений (28 = 256),

9 бит кодируют   —> 512 разных значений  (29 = 512),

10 бит кодируют —> 1024 разных значений (210 = 1024).

Мы помним, что в одном байте не 9 и не 10 бит, а всего 8. Следовательно, с помощью одного байта можно закодировать 256 разных символов. Как Вы думаете, много это или мало? Давайте посмотрим на примере кодирования текстовой информации.

Как происходит кодирование текстовой информации

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

Для больших и маленьких букв английского алфавита потребуется ещё 52 байта. В итоге получается 66 + 52 = 118 байт. Сюда надо ещё добавить цифры (от 0 до 9), символ «пробел», все знаки препинания: точку, запятую, тире, восклицательный и вопросительный знаки, скобки: круглые, фигурные и квадратные, а также знаки математических операций: +, –, =, / (это деление), * (это умножение). Добавим также специальные символы: %, $, &, @, #, № и др. Все это вместе взятое как раз и составляет около 256 различных символов.

А дальше дело осталось за малым. Надо сделать так, чтобы все люди на Земле договорились между собой о том, какие именно коды (с 0 до 255, т.е. всего 256) присвоить символам. Допустим, все люди договорились, что код 33 означает восклицательный знак (!), а код 63 – вопросительный знак (?). И так же – для всех применяемых символов. Тогда это будет означать, что текст, набранный одним человеком на своем компьютере, всегда можно будет прочитать и распечатать другому человеку на другом компьютере.

Таблица ASCII

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

Но не всё так просто. Ведь символы, которые хороши, например, для Греции, не подойдут для Турции потому, что там используются другие буквы. Аналогично то, что хорошо для США, не подойдет для России, а то, что подойдет для России, не годится для Германии.

Поэтому приняли решение разделить таблицу кодов пополам.

Первые 128 кодов (с 0 до 127) должны быть стандартными и обязательными для всех стран и для всех компьютеров, это – международный стандарт.

А со второй половиной таблицы кодов (с 128 до 255) каждая страна может делать все, что угодно, и создавать в этой половине свой стандарт – национальный.

Первую (международную) половину таблицы кодов называют таблицей ASCII, которую создали в США и приняли во всем мире.

За вторую половину кодовой таблицы (с 128 до 255) стандарт ASCII не отвечает. Разные страны создают здесь свои национальные таблицы кодов.

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

Коды из международной таблицы ASCII

0-31 – Особые символы, которые не распечатываются на экране или на принтере. Они служат для выполнения специальных действий, например, для «перевода каретки» – перехода текста на новую строку, или для «табуляции» – установки курсора на специальные позиции в строке текста и т.п.

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

33-47 – Специальные символы (круглые скобки и пр.) и знаки препинания (точка, запятая и пр.).

48-57 – Цифры от 0 до 9.

58-64 – Математические символы: плюс (+), минус (-), умножить (*), разделить (/) и пр., а также знаки препинания: двоеточие, точка с запятой и пр.

65-90 – Заглавные (прописные) английские буквы.

91-96 –  Специальные символы (квадратные скобки и пр.).

97-122 – Маленькие (строчные) английские буквы.

123-127 – Специальные символы (фигурные скобки и пр.).

За пределами таблицы ASCII, начиная с цифры 128 по 159, идут заглавные (прописные) русские буквы. А с цифры 160 по 170 и с 224 по 239 – маленькие (строчные) русские буквы.

Кодировка слова МИР

Пользуясь показанной кодировкой, мы можем представить себе, как компьютер кодирует и затем воспроизводит. Например, рассмотрим слово МИР (заглавными буквами). Это слово представляется тремя кодами:
букве М соответствует код 140 (по национальной российской системе кодировки),
для буквы И – это код 136 и
буква Р – это 144.

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

Десятичной цифре 140 соответствует двоичное число 10001100. Это можно проверить, если сделать следующие вычисления: 27 + 23 +22 = 140. Степень, в которую возводится каждая «двойка»  – это номер позиции двоичного числа 10001100, в которой стоит «1». Причем позиции нумеруются справа налево, начиная с нулевого номера  позиции: 0, 1, 2 и т.д.

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

Аналогичным образом можно убедиться, что цифре 136 соответствует двоичное число 10001000 (проверка: 27 + 23 = 136). А цифре 144 соответствует двоичное число 10010000 (проверка: 27 + 24 = 144).

Таким образом, в компьютере слово МИР будет храниться в виде следующей последовательности нулей и единиц (бит): 10001100  10001000  10010000.

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

Неужели нужно знать все коды?

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

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

Упражнения по компьютерной грамотности, позволяющие самостоятельно увидеть и почувствовать описанные системы кодировок, приведены в статье «Проверяем, кодирует ли компьютер текст?»

P.S. Статья закончилась, но можно еще прочитать:

Представление информации в компьютере

Что такое переменная в программировании и чем она отличается от константы

Смотрим на кодировку цвета



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Комментарии: 26 к “Двоичное кодирование текстовой информации и таблица кодов ASCII”

  • Алёна:

    Надежда,ещё раз благодарю Вас за ваши бесценные уроки! Сейчас редко встретишь таких добрых,бескорыстных людей, как Вы! По вашему совету посмотрела курс К. Фёста, очень понравился, скачала в свой ноутбук. Но вот беда — не могу его открыть! Файл с расширением .pdf — запрашивается программа для его чтения. Пробовала через Интернет — не получилось! Помогите! Как открывать файлы с расширением .pdf? Заранее благодарю Вас за ответ!

  • Виктор:

    Надежда,спасибо за урок.

  • АХАТ:

    Спасибо! Ахат

  • валера:

    спасибо за хорошие информации!

  • Любовь:

    Спасибо за полезную и интересную информацию.

  • Sveta:

    Решили мне задачу по информатике! Спасибочки!

  • виталий:

    спасибо Вспомнил далёкий 64 г когда к нам выпускникам пришла ровесница из универа знакомить с азами к и б е р н е т и к и В памяти остались слова 10 ричная и 2ичная Вы напомнили……и воспоминания………

    • Надежда:

      Виталий, неужели в 1964-ом уже знакомили с кибернетикой? Хотя если первые ЭВМ появились в 1940-ые годы, то вполне может быть.

  • валера:

    спасибо!

  • Алина:

    Надежда, спасибо. Еще раз внимательно все перечитала и поняла. Наверное, тяжело объяснять все это далеким от математики людям. Мне пришлось все нарисовать на бумажке). Стало смешно. Я рассуждала, видимо, так. Раз 1 байт кодирует 256 различных значений, значит они все в нем одном и находятся. Байт один и тот же, а значения разные.)

    • Надежда:

      Спасибо, Алина, за обратную связь! Рада, что Вы разобрались, тем более, что тема, действительно, не простая.

  • Алина:

    Надежда, спасибо. Эти цифры я взяла из начала статьи

    «5 бит кодируют —> 32 разных значения,

    6 бит кодируют —> 64 разных значения.»

  • Алина:

    Большое спасибо за уроки.
    Извините, я не совсем поняла этот. В одном байте восемь бит. Один бит кодирует 2 различных значения. 5 бит кодируют 32 разных значения, 6 бит кодируют 64 разных значения. «В русском языке 33 буквы и, значит, для их кодирования надо 33 байта». Но получается, что нужно 6 бит. Что я неправильно поняла?

    • Надежда:

      Алина, внимательно прочитала Ваш вопрос и поэтому исправляю свой ответ. Вы пишите
      «Один бит кодирует 2 различных значения. 5 бит кодируют 32 разных значения, 6 бит кодируют 64 разных значения» — это означает, что с помощью 1 бита можно закодировать всего 2 буквы (или 2 любых символа).
      С помощью 6 бит можно закодировать 64 буквы (например, 32 заглавных буквы и 32 прописных буквы) или 64 символа.
      Так я подвожу к мысли, что 6 бит мало для кодировки. Ведь надо еще кодировать все знаки препинания и т.п.

  • валера:

    спасибо за совет!

  • Борис.:

    уважаемая Надежда, большое спасибо за уроки.С удовольствием
    и большим вниманием учусь у Вас!

  • валера:

    спасибо за урок!

  • ramses:

    Хотел бы внести несколько уточнений:
    — стандартный диапазон 0-127 называется US-ASCII, основан на изначальном 7-битном варианте этой кодировки;
    — стоило бы привести примеры национальных вариантов, скажем так, кодировки ASCII. В случае кириллических алфавитов — это CP866 и CP1251 (или Windows-1251);
    — ни слова не было упомянуто о Юникоде, о его представлениях — UTF-8 и UTF-16. Без этих понятий какая же может быть грамотность)

  • Надежда:

    Ошибка в п.2, где Вы расставляете номера позиций. «Позиции нумеруются справа налево, начиная с 0», а Вы начали нумерацию не с 0, а с 1.

    Степень двойки легко поставить в текстовом редакторе Word. Например, в Word 2007 в верхней панели после кнопок: Ж(жирным), К (курсив), Ч(подчеркнуто) есть кнопки Х (в степени)2. Пишите число, затем сразу степень, степень выделяете и нажимаете на кнопку Х (в степени)2. Затем снова нажимаете на кнопку Х (в степени)2, чтобы она погасла и остальной текст печатался нормально, без степени.

  • Начинающий пользователь ПК:

    Здравствуйте, Надежда. У меня вопрос (Из Урока № 20: Кодирование текстовой информации). Цитата: «Десятичной цифре 140 соответствует двоичное число 10001100. Это можно проверить, если сделать следующие вычисления: 2(в степени)7 + 2(в степени)3 +2(в степени)2 = 140.
    Степень, в которую возводится каждая двойка — это номер позиции
    двоичного числа 10001100, в которой стоит 1, причем позиции нумеруются справа налево, начиная с 0. Более подробно о переводе чисел из одной системы счисления в другую можно узнать, например, из учебников по информатике или через Интернет.» Конец цитаты.

    Рассуждения начинающего пользователя ПК с целью понять:
    1.Читаю: Степень, в которую возводится каждая двойка — это
    НОМЕР ПОЗИЦИИ двоичного числа 10001100, в которой стоит 1, причём
    позиции нумеруются справа налево, начиная с 0.
    2.Расставляю номера позиций двоичного числа 10001100 справа налево: Позиция № 1 = 0; Позиция № 2
    = 0; Позиция № 3 = 1; Позиция № 4 =1; Позиция № 5 = 0; Позиция № 6 = 0; Позиция № 7 = 0; Позиция № 8 = 1.
    3.Читаю: Степень — это номер позиции, в которой стоит 1.
    4. Выделяю номера позиций, в которых стоит 1: №3, №4 и № 8.
    5.Делаю вычисления: 2**8+2**4+2**3=256+16+8=280 (не
    знаю, как набирать на клавиатуре 2 в степени 8; и т.д.).
    Надежда, скажите пожалуйста, 1.Где я заблуждаюсь в моём понимании Вашего текста? И, заодно,
    2.Какими кнопками набирается 2 в степени 8(или 2 в степени 7, как у Вас)? Спасибо.
    Всего Вам доброго. С уважением, начинающий пользователь ПК.

  • Галина:

    Я не нашла информации о клавише Fn и не вижу ее на клавиатуре. Где можно о ней узнать?

  • Надежда:

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

  • Света:

    А у меня компьютер не кодирует текст. Вместо букв на ворде появляются чёрточки. Что делать?

  • Монах Силуан:

    Очень интересная информация и написана просто. Не нужно ничего додумывать самому. Спасибо!