Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.39 Mб
Скачать

5.2. Кодирование в компьютерах символьной (алфавитно-цифровой) информации.

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

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

Преобразование же информации с входного языка на машинные языки осуществляется трансляторами.

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

Еще 1963 г. Международной консультативной комиссией по телеграфии и телефонии (МККТ) был утвержден международный стандарт символов для передачи информации по телеграфным каналам, разработанный фирмой IBM, который явился основой входного языка и для компьютеров. Этот код стандартного алфавита получил название кода ASCII (American Standard Code for Information Interchange). Каждый символ в этом коде представлен семью двоичными разрядами. Этот 7 – разрядный код позволял реализовать 128 кодовых комбинаций, что было достаточно для кодирования основной информации того времени с помощью символов латинского алфавита, десятичных цифр и ряда управляющих символов. Этот алфавит позволяет закодировать:

  1. Графические символы – 94 символа.

а) Латинские прописные и строчные буквы (A, B, C,…Z, a, b, c,…z);

б) Арабские цифры (0, 1, 2,…9);

в) Ограничители (знаки арифметических и логических операций,

скобки, знаки препинания и т.д.)

  1. Управляющие символы – 33 символа.

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

Этот международный стандарт ASCII представлен таблицей 5.2.1. Подобные таблицы получили название кодовых таблиц.

Код 20H представляет стандартный символ пробела.

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

Приведенная таблица кодирования была взята за основу кодирования информации и при использовании ее в вычислительной технике, особенно в персональных компьютерах. Однако бурное развитие средств и методов обработки информации, широкое распространение вычислительной техники по всем странам и континентам, потребовало существенного расширения алфавита входного языка компьютеров. В связи с этим фирма IBM расширила кодовую таблицу ASCII таким образом, что каждый символ кодироваться не 7, а 8-ми разрядным двоичным кодом. Это позволило кодировать уже 256 различных символов. Кодовая таблица такого расширенного кода ASCII (кодовая таблица 437) полностью включает в себя стандарт прежнего кода ASCII (в виде левой половины новой таблицы) и дополнительно содержит 128 кодов с единицей в старшем бите (правая половина таблицы). Эта кодовая таблица сейчас является основной кодовой таблицей персональных компьютеров и носит название MATHII (Latin-1), или стандарта IS8859-1.

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

Но и в этой кодовой таблице отсутствовали символы русского, болгарского и некоторых других алфавитов восточной Европы. Поэтому фирма IBM предложила еще одну таблицу, правая часть которой отличалась от таблицы IS 8859-1 только последним столбцом F, что дало возможность отображать символы большинства стран СНГ. Эта таблица известна как таблица IS 8859-2. Однако она была в некотором смысле неудобна для СССР и у нас была предложена еще несколько кодовых таблиц с левой половиной полностью совпадающей с ASCII, но с правой более подходящей для кодирования русских текстов. Из них наиболее широкое распространение получила так называемая альтернативная кодовая таблица, предложенная В.М.Брябриным и А.А.Чижовым (кодовая таблица КОИ-8). Она оказалось особенно удобной для кодирования символов русского и болгарского алфавитов (см. таблицу 5.2.3).

Табл.5.2.1

Базовая кодовая таблица ASCII

Старшие разряды кода

Младшие разряды кода

0

1

2

3

4

5

6

7

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

0

0

0

0

@

0

@

P

`

p

1

0

0

0

1

Θ

!

1

A

Q

a

q

2

0

0

1

0

۞

2

B

R

b

r

3

0

0

1

1

#

3

C

S

c

s

4

0

1

0

0

$

4

D

T

d

t

5

0

1

0

1

§

%

5

E

U

e

u

6

0

1

1

0

&

6

F

V

f

v

7

0

1

1

1

7

G

W

g

w

8

1

0

0

0

(

8

H

X

h

x

9

1

0

0

1

)

9

I

Y

i

y

A

1

0

1

0

*

:

J

Z

j

z

B

1

0

1

1

+

;

K

[

k

{

C

1

1

0

0

,

<

L

\

l

¦

D

1

1

0

1

-

=

M

]

m

}

E

1

1

1

0

.

>

N

^

n

~

F

1

1

1

1

/

?

O

_

o

Управляющие : Арабские : Прописные : Строчные

: символы : цифры и : буквы : буквы

: :ограничители: латинского : латинского

: : : алфавита и : алфавита и

: : : ограничит. : ограничит.

Табл. 5.2.2

Шестнадцатеричный код

управляющего сигнала

Его отображение на

экране дисплея

Функциональное назначение

управляющего сигнала

01H

Θ

Начало заголовка

02H

۞

Начало текста

03H

Конец текста

04H

Конец передачи

05H

КТМ

06H

Да

07H

Звонок

08H

Возврат на шаг

09H

Горизонт. табуляция

0AH

Перевод строки

0BH

Вертик. табуляция

0CH

Прогон страницы

0DH

Возврат каретки

0EH

Shift out

0FH

Shift in

10H

Data line esc

11H

Управление 1

12H

Управление 2

13H

Управление 3

14H

Управление 4

15H

§

Нет

16H

Синхронизация

17H

Конец блока

18H

Аннулирование

19H

End of medium

1AH

Замена

1BH

Escape

1CH

Разделение файла

1DH

Разделение группы

1EH

Разделение записи

1FH

Разделение единицы

7FH

Забой

Была разработана еще одна кодовая таблица IS 8859-3, которая во второй половине содержала символы турецкого, мальтийского, эсперанто и галисийского языков и т.д.

Кроме того, фирма IBM для своих компьютеров серии IBM 360/370 произвольным порядком ввела совершенно иную систему кодирования, не основанную на ASCII. Такая же система кодирования использовалась и в наших компьютерах серии ЕС ЭВМ. Эта система кодирования получила название Extended Binary Coded Decimal Interchange Code (EBCDIC) – расширенный двоично-десятичный код обмена. Эта система существенно отличается от стандарта ASCII.

Таблица 5.2.3.

Старшие разряды

кода

Младшие

разряды кода

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

0

0

0

0

А

Р

а

р

1

0

0

0

1

Б

С

б

с

±

2

0

0

1

0

В

Т

в

т

3

0

0

1

1

Г

У

г

у

4

0

1

0

0

Д

Ф

д

ф

5

0

1

0

1

Е

Х

е

х

6

0

1

1

0

Ж

Ц

ж

ц

÷

7

0

1

1

1

З

Ч

з

ч

8

1

0

0

0

И

Ш

и

ш

9

1

0

0

1

Й

Щ

й

щ

A

1

0

1

0

К

Ъ

к

ъ

B

1

0

1

1

Л

Ы

л

ы

C

1

1

0

0

М

Ь

м

ь

©

D

1

1

0

1

Н

Э

н

э

E

1

1

1

0

О

Ю

о

ю

F

1

1

1

1

П

Я

п

я

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

В связи с этим группа компьютерных компаний решила разрешить эту проблему, разработав новую систему кодирования символов под названием UNICODE. Эта система была объявлена международным стандартом IS 10646. Очевидно, она будет с успехом распространяться по всему миру, поскольку она уже поддерживается некоторыми языками программирования (например, Java), некоторыми операционными системами (например, Windows) и многими приложениями (например, Office 95 и Office 97).

Основная идея UNICODE –представлять каждый символ 16 разрядным кодом, который получил название указателя кода. При таком 16 битовом кодировании возможны 65536 кодовых указателей. Поскольку во всех языках мира в общей сложности насчитывается около 200.000 символов, кодовые указатели являются очень скудным ресурсом, который нужно распределять с большой осторожностью. Около половины кодов уже распределено, и консорциум, разработавший систему UNICODE, постоянно рассматривает предложения по распределению оставшейся части. Чтобы ускорить принятие системы UNICODE, консорциум использовал сиcтему Latin-1 в качестве кодов от 0 до 255, легко преобразуя ASCII в UNICODE. Во избежание излишней затраты кодов каждый диакритический знак имеет свой собственный код. А сочетание диакритических знаков с буквами – задача программного обеспечения.

При работе только с 16 битными указателями, представляющими символы UNICODE, используется так называемое кодирование UCS-2. При этом каждый национальный алфавит в UNICODE имеет ряд последовательных зон. Приведем некоторые примеры (в скобках указано число задействованных кодов): латынь (336), греческий (144), русский (256), армянский (96), иврит (112), деванагари (128), гурмуки (128), ория (128), телугу (128), коннада (128). Кроме того, некоторые коды были приписаны диакритическим знакам (112), знакам пунктуации (112), подстрочным и надстрочным знакам (48), знакам валют (48), математическим символам (256), геометрическим фигурам (96) и рисункам (192).

Затем идут символы для китайского, японского и корейского языков. Сначала идут 1024 фонетических символа (например, каталана и бопомофа), затем иероглифы, используемые в китайском и японском языках (20.992), а затем слоги корейского языка (11.156). Чтобы пользователи могли создавать новые символы для особых целей, выделено 6400 кодов.

Но дело в том, что и 65.536 кодов все равно не хватает. Так, например, полный японский словарь содержит 50.000 иероглифов (не считая собственных имен), а выделено для него всего 20.992 кода. Для выхода из этой ситуации, стандарт UNICODE позволяет встроить в тело кодированного UCS-2 текста символы кодирования UCS-4. Для этого отведено 2 блока по 1024 кода. Никаким из этих кодов нельзя представить какой-либо символ. Вместо этого, символ будет представляться в UCS-4 четырьмя байтами, т.е. 32 разрядным кодом. Таким образом, кодированием UCS-4 зарезервировано дополнительно примерно миллион UCS-4 символов.

Застандартизировать же 32 разрядными кодами все символы было бы слишком накладно, и по времени обработки и по занимаемому месту в памяти. Хотя в этом случае мы могли бы иметь возможность кодировать 232 (более миллиарда) символов.

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

  • Цвет самого символа;

  • Интенсивность цвета символа;

  • Цвет фона (т.е. цвет области вокруг символа в знакоместе);

  • Мерцание символа.

Рис. 5.2.1 Формат байта атрибутов символа.

В заключение приведем все форматы данных (чисел и символов), которые используются в современных персональных компьютерах IBM PC и совместимых с ними.