Двоичный алфавит представление данных в компьютере как текстов в двоичном алфавите

Обновлено: 07.07.2024

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

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

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

Числа в памяти ЭВМ хранятся в двух форматах: в формате с фиксированной точкой и в формате с плавающей точкой. Под точкой здесь и в дальнейшем подразумевается знак разделения целой и дробной части числа. Формат с фиксированной точкой используется для хранения в памяти целых чисел. В этом случае число занимает одно машинное слово памяти (16 бит). Чтобы получить внутреннее представление целого положительного числа Л^в форме с фиксированной точкой нужно:

1) перевести число N в двоичную систему счисления;

2) полученный результат дополнить слева незначащими нулями до 16 разрядов.

Например, N = 160710 = 110010001112. Внутреннее представление этого числа в машинном слове будет следующим:

В сжатой шестнадцатеричной форме этот код запишется так: 0647.

Двоичные разряды в машинном слове нумеруются от 0 до 15 справа налево. Старший 15-й разряд в машинном представлении любого положительного числа равен нулю. Поэтому максимальное целое число в такой форме равно:

0111 1111 1111 11112 = 7FFF16 = (2151) = 3276710.

Для записи внутреннего представления целого отрицательного числа (-N) нужно:

1) получить внутреннее представление положительного числа N;

2) получить обратный код этого числа заменой 0 на 1 и 1 на 0;

3) к полученному числу прибавить 1.

Определим по этим правилам внутреннее представление числа 160710.

1) 0000 0110 0100 0111

2) 1111 1001 1011 1000

1111 1001 1011 1001 результат

Шестнадцатеричная форма результата: F9B9.

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

Применение дополнительного кода для внутреннего представления отрицательных чисел дает возможность заменить операцию вычитания операцией сложения с отрицательным числом: N – M = N + (-М). Очевидно, должно выполняться следующее равенство: N + (-N) = 0. Выполним такое сложение для полученных выше чисел 1607 и —1607:

0000 0110 0100 0111 1607

1111 1001 1011 1001 -1607

1 0000 0000 0000 0000 0

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

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

Двоичное 16-разрядное число 1000 0000 0000 0000 = 215 является «отрицательным самому себе»:

1000 0000 0000 0000 215

0111 1111 1111 1111

1000 0000 0000 0000 -215

Этот код используется для представления значения —215 = —32768. Следовательно, диапазон представления целых чисел в 16-разрядном машинном слове:

В общем случае для k-разрядного машинного слова этот диапазон следующий:

В разных типах ЭВМ используются разные варианты организации формата с плавающей точкой. Вот пример одного из вариантов представления вещественного числа в 4-байтовой ячейке памяти:

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

Формат с плавающей точкой предполагает представление вещественного числа R в форме произведения мантиссы (т) на основание системы счисления (л) в некоторой целой степени, которую называют порядком (р):

Порядок указывает, на какое количество позиций и в каком направлении должна сместиться («переплыть») точка в мантиссе. Например, 25,32410 = 0,25324´102. Однако справедливы и следующие равенства:

Следовательно, представление числа в форме с плавающей точкой неоднозначно. Чтобы не было неоднозначности, в ЭВМ используют нормализованную форму с плавающей точкой. Мантисса в нормализованной форме должна удовлетворять условию:

Для рассмотренного числа нормализованной формой будет: 0,25324 хЮ2.

В памяти ЭВМ мантисса представляется как целое число, содержащее только ее значащие цифры (нуль целых и запятая не хранятся). Следовательно, задача внутреннего представления вещественного числа сводится к представлению пары целых чисел: мантиссы (т) и порядка (р). В рассмотренном нами примере т = 25324, р = 2.

В разных типах ЭВМ используются разные варианты организации формата с плавающей точкой. Вот пример одного из вариантов представления вещественного числа в 4-байтовой яч6ейке памяти:

1-й байт 2-й байт 3-й байт 4-й байт

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

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

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

Первая задача — познакомить учеников с символьным алфавитом компьютера. Они должны знать, что

— алфавит компьютера включает в себя 256 символов;

— каждый символ занимает 1 байт памяти.

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

Международным стандартом для персональных компьютеров стала таблица ASCII. На практике можно встретиться и с другой таблицей — КОИ-8 (Код Обмена Информацией), которая используется в глобальных компьютерных сетях, на ЭВМ, работающих под управлением операционной системы Unix, а также на компьютерах типа PDP. К ним, в частности, относится отечественный школьный компьютер Электроника-УКНЦ.

От учеников не нужно требовать запоминания кодов символов. Однако некоторые принципы организации кодовых таблиц они должны знать. Следует рассмотреть вместе с учениками таблицу кода ASCII, приведенную в ряде учебников и в справочниках. Она делится на две части. Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 до 127. Сюда входят строчные и прописные буквы латинского алфавита, десятичные цифры, знаки препинания, всевозможные скобки, коммерческие и другие символы. Символы с номерами от 0 до 31 принято называть управляющими. Их функция — управление процессом вывода текста на экран или печать, подача звукового сигнала, разметка текста и т.п. Символ номер 32 — пробел, т.е. пустая позиция в тексте. Все остальные отражаются определенными знаками. Важно обратить внимание учеников на соблюдение лексикографического порядка в расположении букв латинского алфавита, а также цифр. На этом принципе основана возможность сортировки символьной информации, с которой ученики впервые встретятся, работая с базами данных.

Вторая половина кодовой таблицы может иметь различные варианты. В первую очередь, она используется для размещения национальных алфавитов, отличных от латинского. Поскольку для кодировки русского алфавита — кириллицы, применяются разные варианты таблиц, то часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую. Можно сообщить ученикам, что таблица кодировки символов 128 — 255 называется кодовой страницей и каждый ее вариант имеет свой номер. Так, например, в MS-DOS используется кодовая страница номер 866, а в Windows — номер 1251.

В качестве дополнительной информации можно рассказать о том, что проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode. Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в два раза. Но зато такая кодовая таблица допускает включение до 65 536 символов. Ясно, что в нее можно внести всевозможные национальные алфавиты.

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

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

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

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

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

Цель урока: знакомство с представлением чисел в памяти компьютера.

Задачи урока:

Образовательная – сформировать представление у учащихся о форме представления чисел в памяти компьютера.

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

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

Тип урока: комбинированный.

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

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

Актуализация знаний.

Фронтальный опрос:

Что такое системы счисления?

Что такое основание?

Назовите распространенные системы счисления.

Какой имеет алфавит и основание двоичная система счисления?

Какой имеет алфавит и основание десятичная система счисления?

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

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

Правила сложения двоичных чисел.

3. Изучение нового материала..

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

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

В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы представления их в памяти компьютера.

форма с фиксированной точкой (применяется к целым числам)

форма с плавающей точкой (применяется к вещественным числам).

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

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

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

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

Для представления со знаком самый старший (левый) бит отводится под знак числа, остальные разряды – под само число. Если число положительное, то в знаковый разряд помещается 0, если отрицательное – 1.

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

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

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

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

записать внутреннее представление соответствующего ему положительного числа;

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

к полученному числу прибавить 1.

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

Определим внутреннее представление числа -1310 в восьмиразрядной сетке.

Запишем внутреннее представление числа 1310: 00001101

Запишем обратный код: 11110010

К полученному числу прибавим 1: 11110011

111100112 это и есть представление числа -1310

Мы с вами научились записывать числа в восьмиразрядную сетку, но бывают и 16-разрядные сетки и 32-разрядные сетки (слайд 10).

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

В 16-рядной сетке можно получить числа диапазоном

В 32-разрядной сетке можно получить числа диапазоном

-2147483648<= X <=2147483647

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

Форма с плавающей запятой используется для представления вещественных чисел.

В математике вещественные числа называются действительными числами.

Давайте вспомним из курса математики, что относится к вещественным числам? (целые и дробные числа).

Всякое вещественное число X записывается в виде произведения мантиссы m и основания системы счисления p в некоторой целой степени n , которую называют порядком.

Число 15, 324 можно записать как 0,15324*10 2 .

Здесь мантиссой будет: 0,15324, а степенью: 2.

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

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

В ячейке хранится два числа в двоичной системе счисления: мантисса и порядка (слайд 15). При использовании 32-разрядной ячейки:

старший байт включает в себя: один бит (старший) - знак числа (знак мантиссы); один бит - знак порядка; шесть битов - порядок числа.

Оставшиеся 3 байта отводятся под мантиссу.

В таком представлении максимальный порядок числа равен 1111112 = 6310. Следовательно, 10 63 - максимальное число, которое можно закодировать таким образом:

hello_html_mdba811a.jpg

hello_html_m5243f250.jpg

Результаты вычислений с вещественными числами приближённые. Переполнение приводит к прерыванию работы процессора (слайд 16).

Закрепление изученного материала.

Представить число 4510 для записи числа в памяти компьютера. (Ответ: 00101101).

Представить число -8710 для записи числа в памяти компьютера. (Ответ: 10101001).

Наш урок подходит к завершению. Скажите, пожалуйста, что нового вы сегодня узнали на уроке? Что удалось? Что не удалось? Над чем нам ещё нужно поработать? (Ответы учащихся).

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

Нажмите, чтобы узнать подробности

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

Просмотр содержимого документа
«Представление данных в (памяти) компьютера»

ПРЕДСТАВЛЕНИЕ ДАННЫХ В (ПАМЯТИ) КОМПЬЮТЕРА

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

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

ЭВМ бывают двух типов - аналоговые (АВМ) и цифровые (ЦВМ). В настоящее время наибольшее распространение получили ЦВМ. Их основное отличие в том, что сигналы хранятся и передаются в дискретном виде - побитно. Каждый бит может принимать только два различаемых устройствами компьютера значения, которые принято обозначать 0 и 1.

1). Как Вы думаете, какого типа сигналы - непрерывные или дискретные - проще закодировать, используя два дискретных значения?

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


Рис. Формы представления информации

ПРЕДСТАВЛЕНИЕ ТЕКСТОВОЙ ИНФОРМАЦИИ

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

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

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

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

Наиболее популярные таблицы перекодировки: ДКОИ-8, ASCII, CP1251, Unicode.

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

Стандартно на клавиатуре, предназначенной для российского пользователя, представлены:

66 букв русского алфавита: 33 прописных и 33 строчных;

52 буквы латинского алфавита: 26 прописных и 26 строчных;

8 знаков препинания . , “ : ; ! ? ‘

9 - скобки и разделители ( ) < >[ ] \ | _

4 - знаки арифметических операций + - * /

3 - знаки операций отношения =

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

Минимальная длина двоичного кода для данного набора знаков - 8 (так как 2 7 = 128, а 2 8 = 256). Исторически сложилось, что эта длина кода была выбрана для такой единицы измерения информации в компьютере, как байт (1 байт = 8 бит). Именно поэтому при измерении информации с точки зрения технического подхода мы говорим: “один символ - один байт”.

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

Поскольку различных комбинаций из 0 и 1 при длине кода 8 бит будет 2 8 = 256 с помощью одной таблицы перекодировки можно закодировать не более 256 символов.

ВОПРОС. Почему мы считаем, что “как правило все необходимые символы представлены на клавиатуре”? Какие в этом правиле Вы знаете исключения?

Чтобы ответить на этот вопрос, подумайте о том, что:

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

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

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

Сейчас, когда объем памяти компьютеров чрезвычайно вырос, уже нет нужды очень сильно экономить при кодировании текста. Можно позволить себе "роскошь" тратить для хранения текста вдвое больше памяти (выделяя для каждого символа не 1, а 2 байта). При этом появляется возможность разместить в кодовой таблице - каждый на своем месте - не только буквы европейских алфавитов (латинского, кириллического, греческого), но и буквы арабского, грузинского и многих других языков и даже большую часть японских и китайских иероглифов. Ведь два байта могут хранить уже число от 0 до 65535.

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

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

Основные процедуры, производимые над текстами:

общие (выполняемые не только над текстами, но и над информацией, представленной в других видах) - добавление, замена, удаление, копирование элементов;

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

Основная операция, производимая над отдельными символами текста - сравнение символов.

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

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

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

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

Различных комбинаций из 0 и 1 при длине кода 8 бит может быть 2 8 = 256, поэтому с помощью одной таблицы перекодировки можно закодировать не более 256 символов. При длине кода в 2 байта (16 бит) можно закодировать 65536 символов.

Могут ли разные программные средства, установленные на одном и том же компьютере использовать разные таблицы перекодировки символов?

Рассмотрите клавиатуру вашего компьютера. Сколько различных символов вы можете использовать в своих текстах?

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

Определите, есть ли в вашем распоряжении средства, позволяющие вставлять в текст символы, не представленные на клавиатуре, например, элементы псевдографики (         ) или математические знаки (      ).

Ответьте на вопросы:

Эти средства “заложены” в возможности и предоставляются вам аппаратными или программными средствами компьютера?

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

Есть ли какая-нибудь связь между форматом текстового файла и используемой при его создании таблицей перекодировки?

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

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

Как правило, в программных средствах, предназначенных для работы с файлами (часто они называются еще операционными оболочками), предусмотрена возможность просмотра файлов (например, в таких оболочках, как Norton Commander, FAR-manadger и т.п. для этого служит функциональная клавиша F3). Попробуйте “просмотреть” таким образом файлы разного формата - текстовые, графические, базы данных и пр. Всегда ли на экране появляется “осмысляемое” изображение? Почему очень часто изображение на экране представляет собой набор непонятных символов и значительно отличается от того, что бы вы увидели, если бы тот же самый файл просмотрели в том программном средстве, где он создан, например, базу данных в СУБД или рисунок в графическом редакторе?

РАСШИРЬ СВОЙ КРУГОЗОР

В качестве примеров наиболее популярных таблиц кодировки символов мы приводили ДКОИ-8, ASCII, СР1251. Конечно же, это не просто набор символов, а сокращение от слов - названий таблиц.

Например, название ДКОИ-8 образуется от слов “двоичный код обмена информацией с постоянной длиной кода 8 бит”, ASCII - “american standard code for information interchange” - американский стандартный код для обмена информацией, СР1251 - “Code Page” - кодовая страница.

Для каждого кода устанавливаются свои правила кодирования.

Например, в ДКОИ-8, который использовался еще на больших ЭВМ, байт разбивается на две зоны (рис. . ). В старшей зоне формируются признаки символа и группы (таблица . ), в младшей - порядковый номер в группе.


Пример признака группы

(для признака символа 11)

Прописные буквы и цифры

Например, приведенным ниже символам соответствуют следующие коды в таблице ДКОИ-8:

A - 11 00 0001

a - 10 00 0001

+ - 01 00 1110

J - 11 01 0001

7 - 11 11 0111

: - 01 11 1010

ИНТЕРЕСНЫЙ ФАКТ

Зачем вообще понадобилось создавать разные кодировки для одного и того же алфавита? Разве трудно было придерживаться какого-то одного для всех стандарта? Помимо соображений конкуренции ("Когда наша операционная система завоюет признание, то вместе с ней утвердится и кодировка, - так что конкурентам придется поработать, обеспечивая совместимость") изобретателями кодировок в первую очередь двигал чисто практический расчет. Как правило, еще до того как операционная система русифицируется, за символами из верхней половины таблицы ASCII (с кодами от 128 до 255) уже закреплено то или иное употребление, и чтобы разместить в этом же диапазоне кириллический алфавит, приходится чем-то жертвовать. Разумеется, наименее ценные кодовые позиции, замещение которых нанесет наименьший ущерб функциональности системы, в каждом случае свои, и чаще всего необходимые для полного набора кириллицы 66 знакомест (включая букву "ё", которая традиционно выносится за пределы основного алфавита) не удается расположить подряд. Этим и объясняется тот факт, что ни в одной из кодировок, кроме ISO 8859-5 и Unicode, русские буквы не идут сплошным блоком. В некоторых кодировках допускаются даже отклонения от алфавитного порядка - в особенности в КОИ8, расположение русских букв в которой определяется, как это ни смешно, алфавитом тех латинских букв, которые на клавиатурах советского производства располагались на одних клавишах с соответствующими буквами кириллицы (например, буква "Ю" стояла на одной клавише с символом "@", идущим в ASCII перед латинской "A", и потому стала в КОИ8 "первой буквой алфавита").

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

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

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

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

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

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

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

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

С точки зрения ЭВМ текст состоит из отдельных символов. К числу символов принадлежат не только буквы (заглавные или строчные, латинские или русские), но и цифры, знаки препинания, спецсимволы типа "=", "(", "&" и т.п. и даже (обратите особое внимание!) пробелы между словами.


Т радиционно для кодирования одного символа используется количество информации, равное 1 байту, т. е. I = 1 байт = 8 бит. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить сколько различных символов можно закодировать (считая, что символы - это возможные события): К = 2 I = 2 8 = 256, т. е. для представления текстовой информации можно использовать алфавит мощностью 256 символов. Такое количество символов вполне достаточно для пред­ставления текстовой информации, включая прописные и строчные буквы русского и латинского алфавита, цифры, знаки, графические символы и пр.

Кодирование заключается в том, что каждому символу ставится в соответствие уникальный десятичный код от 0 до 255 или соответствующий ему двоичный код от 00000000 до 11111111. Таким образом, человек различает символы по их начертанию, а компьютер - по их коду.

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

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

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

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

Виды таблиц кодировок

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

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

В качестве международного стандарта принята кодовая таблица ASCII (American Standard Code for Information Interchange - Американский стандартный код для информационного обмена), кодирующая первую половину символов с числовыми кодами от 0 до 127 ( коды от 0 до 32 отведены не символам, а функциональным клавишам).

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

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

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

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

Символы с номерами от 0 до 31 принято называть управляющими.

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

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

Символ 32 - пробел, т.е. пустая позиция в тексте.

Все остальные отражаются определенными знаками.

Альтернативная часть таблицы (русская).

Вторая половина кодовой таблицы ASCII, называемая кодовой страницей (128 кодов, начиная с 10000000 и кончая 11111111), может иметь различные варианты, каждый вариант имеет свой номер.

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


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

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



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


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


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


Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251. Введена компанией Microsoft; с учетом широкого распространения операционных систем (ОС) и других программных продуктов этой компании в Российской Федерации она нашла широкое распространение.


С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode.


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

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

с помощью таблицы ASCII

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


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

Н апример, последовательность числовых кодов 221, 194, 204 в кодировке СР1251 образует слово «ЭВМ» (Рис. 10), тогда как в других кодировках это будет бессмысленный набор символов.

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

Читайте также: