
- •V. Формы представления информации в компьютере.
- •V.1. Кодирование в компьютерах числовой информации.
- •Системы счисления и переводы чисел из одной системы счисления в другую.
- •Десятичная:
- •Шестнадцатеричная:
- •Двоично-десятичная:
- •2. Прямой, обратный и дополнительный коды чисел.
- •V.2. Кодирование в компьютерах символьной (алфавитно-цифровой) информации.
- •V.3 Кодирование в компьютерах звуковой информации.
- •V.4 Кодирование в компьютерах визуальной информации.
V.2. Кодирование в компьютерах символьной (алфавитно-цифровой) информации.
Ввод информации в компьютер в том виде, в котором она в нем хранится и обрабатывается, т.е. в виде двоичных кодов, для человека весьма неудобен и трудоемок. Программы и данные, которые вводятся в компьютер человеком, формируются обычно в виде последовательности некоторых символов, в том числе символов цифр десятичной системы счисления.
Совокупность элементарных символов, с помощью которых записываются программы и данные, решаемых на компьютере задач, носит название алфавита входного языка.
Преобразование же информации с входного языка на машинные языки осуществляется трансляторами.
При этом следует учесть, что в современных компьютерах приобрела существенное значение обработка не только чисел, что характерно для научно-исследовательских задач, но и обработка непосредственно текстовой информации, которая содержит буквы различных алфавитов, десятичные цифры, знаки препинания и т.п. Такой характер имеет, например, деловая, финансово-экономическая, планово-производственная, учетная и статистическая информация. Характерной особенностью такой информации является то, что для ее представления требуются слова переменной длины и то, что обработка ее осуществляется по сравнительно несложным алгоритмам (упорядочение по определенным признакам, получение некоторых статистических характеристик, выявление максимальных и минимальных значений и т.п.). В то же время объем исходной вводимой и результирующей выводимой информации, при этом, весьма велик. В связи с этим становится более эффективным не преобразовывать, например, большие массивы вводимых чисел из десятичной системы счисления входного языка в двоичную систему, а проводить обработку этих чисел в двоично-десятичной системе счисления, поскольку преобразование десятичных чисел входного языка в двоично-десятичные и обратно осуществляется значительно проще и быстрее.
Еще 1963 г. Международной консультативной комиссией по телеграфии и телефонии (МККТ) был утвержден международный стандарт символов для передачи информации по телеграфным каналам, разработанный фирмой IBM, который впоследствии явился основой входного языка и для компьютеров. Этот код стандартного алфавита получил название кода ASCII (American Standard Code for Information Interchange). Каждый символ в этом коде был представлен семью двоичными разрядами. Этот 7 – разрядный код позволял реализовать 128 кодовых комбинаций, что было достаточно для кодирования основной информации того времени с помощью символов латинского алфавита, десятичных цифр и ряда управляющих символов. Этот алфавит позволял закодировать:
Графические символы – 94 символа.
а) Латинские прописные и строчные буквы (A, B, C,…Z, a, b, c,…z);
б) Арабские цифры (0, 1, 2,…9);
в) Ограничители (знаки арифметических и логических операций,
скобки, знаки препинания и т.д.)
Управляющие символы – 33 символа.
Управляющие символы являются указателями специальных сигналов управления аппаратурой передачи данных, устройствами ввода/вывода, разделения информации на части (блоки) в соответствии с ее логическим содержанием (перевод строки, табуляция, переход на другой регистр, удаление символа и т.п.).
Этот международный стандарт ASCII представлен таблицей V.2.1. и в дальнейшем являлся основой многих других, уже восьмиразрядных таблиц. Подобные таблицы получили название кодовых таблиц.
Табл.V.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 |
⌂ |
Управляющие : Арабские : Прописные : Строчные
: символы : цифры и : буквы : буквы
: :ограничители: латинского : латинского
: : : алфавита и : алфавита и
: : : ограничит. : ограничит.
Код 20H представляет стандартный символ пробела.
При отображении на дисплей управляющих символов, на экране появляются специфические символы, отображенные в таблице и вид которых еще зависит и от знакогенератора дисплея. Ниже, в таблице V.2.2 приведено функциональное назначение кодов управляющих символов.
Табл. V.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 |
⌂ |
Забой |
Приведенная таблица кодирования была взята за основу кодирования информации и при использовании ее в вычислительной технике, особенно в персональных компьютерах. Однако бурное развитие средств и методов обработки информации, широкое распространение вычислительной техники по всем странам и континентам, потребовало существенного расширения алфавита входного языка компьютеров. В связи с этим фирма IBM расширила кодовую таблицу ASCII таким образом, что каждый символ кодироваться не 7, а 8-ми разрядным двоичным кодом. Это позволило кодировать уже 256 различных символов. Кодовая таблица такого расширенного кода ASCII (кодовая таблица 437) полностью включает в себя стандарт прежнего кода ASCII (в виде левой половины новой таблицы) и дополнительно содержит 128 кодов с единицей в старшем бите (правая половина таблицы). Эта кодовая таблица сейчас является основной кодовой таблицей персональных компьютеров и носит название MATHII (Latin-1), или стандарта IS8859-1.
Правая половина этой таблицы включает в себя дополнительные символы ряда европейских алфавитов (немецкого, французского, финского и др.), буквы греческого алфавита, а также некоторые дополнительные математические символы. Кроме того, в этой половине таблицы кодируются, так называемые символы псевдографики, позволяющие весьма эффективно изображать таблицы, гистограммы, простейшие геометрические фигуры и т.п.
Но и в этой кодовой таблице отсутствовали символы русского, болгарского и некоторых других алфавитов восточной Европы. Поэтому фирма IBM предложила еще одну таблицу, правая часть которой отличалась от таблицы IS 8859-1 только последним столбцом F, что дало возможность отображать символы большинства стран СНГ. Эта таблица известна как таблица IS 8859-2. Однако она была в некотором смысле неудобна для России и у нас была предложена еще несколько кодовых таблиц с левой половиной полностью совпадающей с ASCII, но с правой более подходящей для кодирования русских текстов. Из них наиболее широкое распространение получила так называемая альтернативная кодовая таблица, предложенная В.М.Брябриным и А.А.Чижовым (кодовая таблица КОИ-8). Она оказалось особенно удобна для кодирования символов русского и болгарского алфавитов (см. таблицу V.2.3).
Таблица V.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 |
@ |
► |
|
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 |
⌂ |
П |
Я |
п |
┐ |
╧ |
▌ |
я |
|
Была разработана еще одна кодовая таблица IS 8859-3, которая во второй половине содержала символы турецкого, мальтийского, эсперанто и галисийского языков и т.д.
Кроме того, фирма IBM для своих компьютеров серии IBM 360/370 произвольным порядком ввела совершенно иную систему кодирования, не основанную на ASCII. Такая же система кодирования использовалась и в наших компьютерах серии ЕС ЭВМ. Эта система кодирования получила название Extended Binary Coded Decimal Interchange Code (EBCDIC) – расширенный двоично-десятичный код обмена. Эта система существенно отличается от стандарта ASCII.
Все это разнообразие существенно усложняет ввод информации в компьютеры, и в то же время все равно не охватывает все возможные символы, требующиеся для кодирования в настоящее время. Необходимость в расширении возможностей кодирования все время увеличивается в связи с расширением сфер применения компьютеров, особенно персональных. Ведь в мире сейчас насчитывается около 6800 языков, в которых, в общей сложности, содержится более 200.000 различных символов.
В связи с этим группа компьютерных компаний решила разрешить эту проблему, разработав новую систему кодирования символов под названием UNICODE. Эта система была объявлена международным стандартом IS 10646. Очевидно, она будет с успехом распространяться по всему миру, поскольку она уже поддерживается некоторыми языками программирования (например, Java), некоторыми операционными системами (например, Windows) и многими приложениями (например, Office 95, Office 97, Office 2000).
Основная идея 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 кода. Никаким из этих кодов отдельно нельзя представить какой-либо символ. Эти коды являются младшими байтами 32 разрядного, т.е. четырехбайтного кода UCS-4. Таким образом, кодированием UCS-4 зарезервировано дополнительно примерно миллион UCS-4 символов.
Застандартизировать же 32 разрядными кодами все символы было бы слишком накладно, и по времени обработки и по занимаемому месту в памяти. Хотя в этом случае мы могли бы иметь возможность кодировать 232 (более миллиарда) символов.
Следует заметить, что кроме кода самого символа, который выводится на цветной дисплей или принтер, кодируются и некоторые его атрибуты, занимающие дополнительный байт. Назначение битов этого байта атрибутов иллюстрировано на рисунке V.2.1. В этом байте атрибутов кодируются:
Цвет самого символа;
Интенсивность цвета символа;
Цвет фона (т.е. цвет области вокруг символа в знакоместе);
Мерцание символа.
Рис. V.2.1 Формат байта атрибутов символа.
В заключение приведем все форматы данных (чисел и символов), которые используются в современных персональных компьютерах IBM PC и совместимых с ними.
Заметим, что двоично-десятичные числа представляются полями переменной длины в так называемых упакованном и распакованном форматах.
В упакованном формате, каждой десятичной цифре отводится четыре двоичных разряда (полубайт, тетрада, нибл), так что в каждом байте представления числа размещаются две десятичных цифры. При этом знак числа кодируется в самом младшем его полубайте (тетраде), как показано на рис. V.2.2.
Рис. V.2.2 Структура поля упакованного формата двоично-десятичного
числа.
В распакованном формате (рис. V.2.3), каждая десятичная цифра двоично-десятичного числа занимает целый байт. При этом старшая тетрада байта (зона) кодируется обычно кодом 0011, а в младшей тетраде записывается двоичный код цифры. Младший байт двоично-десятичного числа в распакованном формате отличается тем, что вместо «зоны» в его старшей тетраде записывается код знака числа.
Рис. V.2.3 Структура поля распакованного формата двоично-десятичного
числа.