Хранение данных в ЭВМ

 

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

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

Рассмотрим формы и форматы хранения данных, и обработку некоторых видов информации подробнее.

 

Представление числовых данных в ЭВМ. Элементом для хранения единицы информации является двоичная ячейка, в которой может быть записано либо 0, либо 1. Объем информации, хранимой в такой ячейке, один бит. Восемь таких ячеек, объединенных в группу, позволяет хранить байт (8 бит) информации. Типичным для современных компьютеров объединением таких ячеек является объединение по 4 или 8 байт.

 

Представление целых чисел. Естественная форма. Используя только один байт, можно записать 28 =256 различных положительных чисел в диапазоне от 0 до 255.

Число Разряды двоичного числа

 

 

Заметим, что все ячейки отданы под представление самого числа. Очевидно, что если первый разряд выделить под знак числа, то в этом же количестве разрядов можно поместить числа в два раза меньшие по модулю, т.е. от –128 до +127, всего 256 чисел. Например, числа –127 и +127 записываются, как указано в таблице (заштрихованный первый разряд обозначает знак числа).

Число Разряды двоичного числа
-127

 

 

В двух байтах можно расположить расширенный ряд натуральных чисел в диапазоне от 0 до 65535, а целые числа в диапазоне от –32767 до +32767.

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

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

 

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

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

A = 125, 25 = 12525×10-3 = 0,12525×103 = 0,0012525×105.

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

,

где мантисса числа A, q – основание системы счисления, порядок числа A, причем мантисса должна отвечать условию:

.

Ограничение справа требует, чтобы мантисса представлялась правильной дробью, ограничение слева - чтобы после запятой присутствовала значащая цифра (не 0). Так, число 125,25 представляется в нормализованной форме как 0,12525×10 3.

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

 

 

Длина в байтах Название типа в языке Паскаль Мантисса, значащие цифры Диапазон десятичного порядка
single 7…8 –45…+38
real 11…12 –39…+38
double 15…16 –324…+308
extended 19…20 –4951…+4932

 

Для представления чисел в нормальной форме используются фиксированные форматы разной длины. Например, для типа длиной в 4 байта в разрядной сетке форматов отводятся места для знака мантиссы (нулевой разряд), знака порядка (первый разряд), значения порядка (6 разрядов, со 2-го по 7-ой), в остальные разряды записывается мантисса числа. В других форматах первый байт не изменяется, а увеличивается область под мантиссу. На рисунке представлена разрядная сетка в формате 4 байта.

 

Знак Знак                    
mA PA   PA         mA      
                       
. .    

 

Формат числа в нормальной форме

 

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

При двоичном представлении числа:

Представление нормальной формы в ЭВМ имеет следующие особенности:

1. В нормальных форматах 7 разрядов отводится под значение порядка и его знак. Следовательно, числовая ось порядков находится в диапазоне или . Для облегчения действий над порядками делается смещение числовой оси порядков в область положительных значений, где не требуется учитывать знаки порядков. Это смещение равно +26 = 64 = 4016. Смещенный порядок называется характеристикой и обозначается Рх. Характеристика числа не имеет знака и определяется: .

Теперь характеристика может принимать значения в диапазоне =7F16 и под ее значение отводятся 7 разрядов (27 -1 =127). Очевидно, если Рх=4016, то РА = 0, если Рх< 4016, то порядок отрицательный (РА < 0), при Рх> 4016 - порядок положительный (РА > 0). Если Рх < 0 или Рх > 7F16, то значение характеристики пропадает, и результаты искажаются.

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

Действительно, если в формулу подставить q = 16, то Таким образом значение порядка увеличилось в 4 раза.

Представим в разрядной сетке формата в 4 байта два числа: А10 = 41006,5 = А16 = А02Е,8 и В10 = –41006,5 = В16 = –А02Е,8. Для этого найдем нормализованные мантиссы и характеристики: mA = 0,А02Е8, Рх A = 40 + 4= = 44; mB = –0,А02Е8, Рх B = = 40 + 4 = 44.

 

 

Знак числа определяется по первой шестнадцатеричной цифре кода числа.

 

 

 

 

A16=44А02Е80>0
B16=C4А02Е80<0
             

Представление чисел в формате в 4 байта.

 

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

Пусть K = . Следовательно, операцию C = A - B, где A и B - целые положительные числа в любой системе счисления, можно представить в виде:

,

где 10 - основание любой системы счисления;

- константа образования дополнительного кода;

- константа образования обратного кода.

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

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

 

Пример. Пусть A = 46, B = 38. Найти C = A - B.

Константа для дополнительного кода для обратного кода Тогда , .

 
 

 

 


 

 

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

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

 

Пример 2. Пусть A = 46, B = 38. Найти С1 = В - А, С2 = А + В, С3 = -А - В.

Определим (-А)ДОП = 102 - 46 = 54: (-В)ДОП = 102 - 38 = 62.

       
 
   
 

 


 

Из примеров 1 и 2 следует, что при сложении чисел с разными знаками (С и С1), наличие единицы переноса из старшего разряда является признаком положительного результата (С), отсутствие переноса (С1) - признаком отрицательного результата, при этом константа образования дополнительного кода не скомпенсирована и осталась в сумме.

При сложении чисел с одинаковыми знаками признаки противоположны: отсутствие переноса единицы из старшего разряда при положительных слагаемых (С2) является признаком положительного результата, наличие переноса при отрицательных слагаемых (С3) - признаком отрицательного, при этом одна константа компенсируется переносом, а вторая сохраняется в сумме. Эти же признаки в суммах (С2 и С3) указывают на отсутствие переполнения разрядной сетки для записи результатов (результаты имеют два десятичных разряда).

 

Пример 3. Пусть A = 61, B = 72. Найти С4 = А + В, С5 = -А - В.

Определим (-А) ДОП = 102 - 61 = 39: (-В) ДОП= 102 - 72 = 28.

       
   
 
 

 


Здесь в обоих случаях при сложении чисел с одинаковыми знаками происходит переполнение разрядной сетки, признаками которого являются: наличие переноса из старшего разряда при положительных слагаемых (С4) и отсутствие переноса при отрицательных (С5). При получении суммы С5 перенос отсутствует, т.е. обе константы 100 остались в полученном результате. Следовательно, результат 67-100 = -33, -33 - 100 = - 133 по модулю больше константы и в отведенные два разряда не умещается.

Рассмотрим образование кодов в двоичной системе счисления на примере А=±27. Знак числа, как было указано выше, кодируется 0 или 1, записывается перед старшим разрядом и отделяется для наглядности точкой, которая не является частью кода и в разрядной сетке не отражается. Для простоты примем, что задана разрядная сетка в один байт, т.е. 8 двоичных разрядов, из которых один отводится под знак, а 7 для записи числа.

А10 = ± 27 = А16 = ± 1B = А2 = ±11011.

Примем константу для дополнительного кода: К10 = 2­8 = К2 = 101000 = 100000000 и константу для обратного кода: К10 = 2­8 - 1 = К2 = 101000 - 1 = 11111111.

В таблице приведены прямой, обратный и дополнительные коды для чисел 27 и -27.

Число [A]ПК [A]ОК [A]ДК
0.0011011 0.0011011 0.0011011
-

 
-
100000000

   
- 11011 1.0011011 1.1100100 1.1100101

 

Приведем правила образования машинных кодов:

 

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

2) Положительное число в прямом, обратном и дополнительном кодах имеет одинаковое изображение.

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

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

 

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

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

 

Действия над числами, представленными в естественной форме.При сложении кодов чисел в естественной форме следует учитывать следующие положения:

1) числа хранятся в дополнительном коде;

2) в сумматоре числа складываются вместе со знаками, при этом образуется знак результата;

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

4) признаками переполнения разрядной сетки при сложении кодов чисел с одинаковыми знаками могут служить:

a) знак суммы не соответствует знакам слагаемых;

b) переносы из старшего разряда суммы в знаковый и из знакового не согласуются, т.е. один из них присутствует, а другой отсутствует.

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

 

Пример 4. Дано: А = 267, В = 186. Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате.

Решение.

a) представим исходные числа в двоичной системе счисления:

А10 = 267 = А16 = 10B = A2 = 100001011

B10 =186 = B16 = BA = A2 =10111010

b) составим машинные коды этих чисел с разными знаками:

[A]ПК = 0.000000100001011; [B]ПК = 0.000000010111010.
[-A]ДК = 1.111111011110101; [-B]ДК = 1.111111101000110.

c) выполнение действий:

+
С1 = А + В С2 = А - В
[A]ПК = 0.000000100001011; [А]ПК=0.000000100001011
[В]ПК = 0.000000010111010[-B]ДК=1.111111101000110
[С1]ПК = 0.000000111000101>0 [С2]ДК = 10.000000001010001>0


С3 = В - А С4 = -А - В
[В]ПК = 0.000000010111010 [-А] ДК = 1.111111011110101
[-А]ДК = 1.111111011110101 [-B] ДК = 1.111111101000110
[С3]ДК = 1.111111110101111<0 [С4] ДК = 11.111111000111011<0

Из примера следует:

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

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

3) Суммы С1 и С2 - положительные, С2 и С4 - отрицательные, т.е. знаки результатов получены при сложении чисел со знаками.

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

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

С1 =111000101=1×28 +1×27 + 1×26 + 1×22 +1×20 =256 + 128 +64 + 4 + 1 = 453;

C1=267 + 186 = 453.

C2= 1010001= 5116 = 5×16 + 1 = 81; C2 = 267 - 186 = 81;

C3 = - 1010001 = -[(((((1×2 + 0)2 +1)2 + 0)2 + 0)2 + 0)2 + 1] = -81.

C4 = - 111000101 = - 1C516 = - [(1×16 + 12)16 + 5] = - 453.

 

Пример 5. Дано А = 24756, В = 8397. Найти суммы положительных и отрицательных значений чисел в 16- разрядном формате.

Решение.

А10 = 24756= А16 = 60B4 = А2 = 110000010110100;

В10 = 8397= В16 = 20CD = В2 = 10000011001101.

С1 = А + В С2 = - А - В
[A]ПК = 0.110000010110100 [-А]ПК = 1.001101101100100
[В]ПК = 0.010000011001101[-B]ДК = 1.110010000101011
[С1]ПК ¹ 1.000000110000001<0 [С2]ДК ¹ 10.111111110001111>0

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

 

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

1. Числа в нормальной форме хранятся в памяти в прямом коде с нормализованными мантиссами.

2. Сложение кодов производится путем сложения мантисс только при одинаковых порядках (характеристиках) слагаемых. За общий выбирается наибольший порядок. Выравнивание порядков слагаемых осуществляется изменением мантиссы меньшего числа.

Пусть , и . Тогда разность порядков и .

,

где - мантисса, приведенная к большему порядку путем ее сдвига вправо на DP разрядов основания q.

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

4. Результаты в прямом коде нормализуются.

5. Действия в сумматоре выполняются только над кодами мантисс, которые поступают из регистров в младшие 24 разряда сумматора, знаки мантисс и значения характеристик заносятся в специальные схемы, которые обеспечивают выравнивание характеристик, нормализацию мантиссы результата, формирование знака и характеристики суммы. В старшие разряды (0 - 7) сумматора записываются нули.

6. Алгоритм операции алгебраического сложения после выравнивания характеристик зависят от знаков слагаемых:

a) Если знаки слагаемых одинаковы (положительные или отрицательные), то модули мантисс (прямые коды) суммируются. Переполнение определяется наличием переноса 1 из старшего разряда мантиссы в 7-ой разряд сумматора (в поле характеристики), что вызывает нарушение нормализации мантиссы влево. Нормализация результата производится сдвигом мантиссы на одну шестнадцатеричную цифру вправо. Старшая тетрада мантиссы при этом заполняется 0001, а характеристика результата увеличивается на 1. После этого в регистре результата сумматора формируется результат операции: из схем анализа знаков и характеристик заносятся в нулевой разряд знак одного из слагаемых, в 1-7 разряды - характеристика, а в 8-31 разрядах сохраняется мантисса суммы в прямом коде.

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

Нормализация мантиссы суммы производится сдвигом ее влево на одну шестнадцатеричную цифру и уменьшением характеристики на единицу. После этого в регистре сумматора формируется результат: в нулевой разряд заносится знак большего по модулю слагаемого, в 1-7 разряды - характеристика и в 8-31 разряды мантисса результата в прямом коде.

Реализацию этих положений рассмотрим на примерах.

Пример 6. Даны два числа: A =В =Найти С1=А + В, С2= – А В.

Решение. Будем представлять мантиссы и характеристики чисел в шестнадцатеричной системе: А16 = F,D; В16 = 0,7.

a) Нормализация мантисс и определение характеристик:

mА = 0,FD; PXA = 40 + 1= 41;

mB = 0, 7; PXB = 40 + 0 = 40.

Замечание. Напомним, что характеристика смещена в область положительных (беззнаковых) значений на 26 = 4016­.

b) Выравнивание характеристик:

DP= 41– 40 = 1; .

c) Выполнение действий.

1. С1 = А+ В

[mA]ПК = 00 'FD0000; PXA = 41

[mB]ПК = 00 '070000; PXB = 41

[mC1]ПК = 01 '040000; PXC1 = 41

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

Нормализация мантиссы

[mC1]ПК = 00 '104000; PC1 = 41+ 1 = 42

Проверка. C1 = 10,416 = 16; C1 = 15+ 16.

В разрядной сетке регистра сумматора формируется результат действия: заносятся знак результата (+), характеристика (42) и сохраняется мантисса в прямом коде.

 

 

Ответ.

 

 

или С1 42104000.

 

2. С2 = – АВ.

Так как числа A, В и результат С2 хранятся в прямом коде, то нет необходимости выполнять двойное преобразование: данных в дополнительный, а результата в прямой коды. Поэтому действие выполняется С2 = – (А+В), т.е. производится сложение прямых кодов мантисс, а результату приписывается знак одного из чисел (минус), то есть С2 = – С1.

Ответ. С21100 0010 0001 0000 0100 0000 0000 0000 или С2 С2104000.

Пример 7. Даны два числа: A =В =Найти С3 = АB и С4 = ВА.

Решение.

mB*= 0,07; PXB = 41; - m B* ДОП = 1,00 – 0,07 = 0, F9; [- m B*]ДК = 00' F90000.

mA =0,FD; PXA = 41; - m A ДОП = 1,00 – 0,FD = 0, 03; [- mA]ДК = 00' 030000

 

1. С3 = AB

[mA]ПК = 00 'FD0000; PXA = 41
[- mВ*]ДК = 00 'F90000; PXB = 41
[mC3]ДК = 01 'F60000>0; PXC1 = 41

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

Проверка. С3 = F,6 = 15 .

Ответ. С3 0100 0001 1111 0110 0000 0000 0000 0000 или С3 41F60000.

 

2. C4 = В - А

[mВ*]ПК = 00 '070000 PXB = 41

[- mA]ДК = 00 '030000; PXA = 41
[mC4]ДК = 00 '0A0000<0; PXC4 = 41

 

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

 

[mC4] ПК = 00 ' F60000; PXC4 = 41.

Проверка. С4 = F,4 = –15 .

Ответ. C4 1100 0001 1111 0110 0000 0000 0000 0000 или С4 С1F60000.

 

Пример 8. Дано: A = 231, B = 219,75. Найти С1 = А В, С2 = ВА.

Решение. А16 = E7, В16 = DB,C.

a) Нормализация мантисс и определение характеристик.

mA = 0,E7; PXA = 40 + 2 = 42;

mB = 0,DBC; PXB = 40 + 2 = 42;

 

b) Выполнение действий.

 

1. С1 = АВ

[mA*]ПК = 00 'E70000; PXA = 42

[- mB*]ДК = 00 '244000; PXB = 42

[mC1]ДК = 01 '0B4000>0; PXC1 = 42

 

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

 

Нормализация мантиссы

[mC1]ПК = 00 'B40000; PXC1 = 42 – 1 = 41.

Проверка. С1 = B,4 = – 11.

Ответ. C10100 0001 1011 0100 0000 0000 0000 0000 или С1 41B40000.

 

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

[mВ*]ПК = 00 'DBC000 PXB = 42
[- mA]ПК = 00 '190000; PXA = 42

[mC2]ДК = 00 'F4C000<0; PXC2 = 42

 

[mC2]ПК = 00 '0B4000; PXC2 = 42

 

Старшая тетрада мантиссы равна нулю, следовательно, произошло нарушение нормализации вправо.

Нормализация мантиссы:

[mC2]ПК = 00 'B40000; PXC2 = 42 – 1 = 41.

Ответ. C2 0100 0001 1011 0100 0000 0000 0000 0000 или C2 41B40000.

 

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

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

Каждый символ, будучи представлен числом, в соответствии с некоторой таблицей, о которой договариваются заранее, хранится в компьютере в виде восьми разрядного числа. Таким образом, при вводе информации каждая буква русского или латинского алфавитов, цифра, знак пунктуации, дополнительный символ или действие кодируется определенной последовательностью двоичных цифр в соответствии с таблицами кодирования, например, ДКОИ, КОИ-8, ASCII. Кодировка символов в соответствии с кодом ASCII (American Standard Code for Information Interchange) приведена в двух таблицах: стандартной (Таблица 1) и альтернативной (Таблица 2).

Таблица 1

Код Символ Код Символ Код Символ Код Символ Код Символ Код Символ Код Символ
  . < J X f t
! / = K Y g u
" > L Z h v
# ? M [ i w
$ @ N j x
% A O ] k y
& B P ^ l z
' C Q _ m {
( D R ` n |
) E S a o }
* F T b p ~
+ G U c q ?
, : H V d r  
- ; I W i s    

Таблица 2

Код Символ Код Символ Код Символ Код Символ Код Символ Код Символ Код Символ Код Символ
А Р а р
Б С б с ±
В Т в т
Г У г у
Д Ф д ф
Е Х е х
Ж Ц ж ц ?
З Ч з ч
И Ш и ш °
Й Щ й щ
К Ъ к ъ
Л Ы л ы
М Ь м ь
Н Э н э ²
О Ю о ю
П Я п я  

 

Таким образом, фраза “Cat Вася.” будет храниться как следующая последовательность бинарных сигналов:

 

С a t   В а с я .

 

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

Теоретически давно существует решение этих проблем. Оно называется Unicode (Юникод). Unicode – это кодировочная таблица, в которой для кодирования каждого символа используется 2 байта, т.е. 16 бит. На основании такой таблицы может быть закодировано N=216=65 536 символов.

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

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

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

Для символов кириллицы в Юникоде выделено два диапазона кодов: Cyrillic (#0400 — #04FF) и Cyrillic Supplement (#0500 — #052F).

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

Поэтому сейчас на практике больше распространено представление Юникода UTF-8 (Unicode Transformation Format). UTF-8 обеспечивает наилучшую совместимость с системами, использующими 8-битные символы. Текст, состоящий только из символов с номером меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. Остальные символы Юникода изображаются последовательностями длиной от 2 до 4 байтов. В целом, так как самые распространенные в мире символы – символы латинского алфавита - в UTF-8 по-прежнему занимают 1 байт, такое кодирование экономичнее, чем чистый Юникод.