- •Лекция 57.11.1 – 57.21.1
- •Кодирование информации
- •1. Кодирование чисел. Системы счисления
- •1.1. Перевод целых чисел из системы счисления с основанием k в десятичную систему счисления
- •1.2. Двоичная система счисления
- •1.3. Перевод целых чисел из десятичной системы счисления в систему счисления с другим основанием
- •1.4. Шестнадцатеричная система счисления
- •1.5. Вавилонская (шестидесятеричная) система счисления
- •1.6. Задачи
- •Системы счисления, которые специалисты используют для общения с компьютером
- •Представление целых чисел в компьютере
- •Как компьютер выполняет арифметические действия над целыми числами
- •Как представляются в компьютере вещественные числа
- •Как компьютер выполняет арифметические действия над нормализованными числами
- •2. Кодирование двоичным кодом
- •3. Кодирование символов. Байт.
- •3.1. Юникод. Utf-8
- •3.2. Задачи
- •4. Единицы измерения объема данных и ёмкости памяти: килобайты, мегабайты, гигабайты…
- •4.1. Задачи
- •5. Кодирование графической информации
- •5.1. Восприятие цвета
- •5.2. Цветовые модели rgb и cmyk
- •5.3. Другие цветовые модели
- •5.4. Некоторые принципы уменьшения объема графических файлов
- •5.5. Задачи
- •6. Кодирование звуковой информации
- •6.1. Цифро-аналоговое и аналого-цифровое преобразование звуковой информации
- •6.2. Параметры семплирования
- •6.3. Задачи
3. Кодирование символов. Байт.
На основании одной ячейки информационной ёмкостью 1 бит можно закодировать только 2 различных состояния. Для того чтобы каждый символ, который можно ввести с клавиатуры в латинском регистре, получил свой уникальный двоичный код, требуется 7 бит. На основании последовательности из 7 бит, в соответствии с формулой Хартли, может быть получено N=27=128 различных комбинаций из нулей и единиц, т.е. двоичных кодов. Поставив в соответствие каждому символу его двоичный код, мы получим кодировочную таблицу. Человек оперирует символами, компьютер – их двоичными кодами.
Для латинской раскладки клавиатуры такая кодировочная таблица одна на весь мир, поэтому текст, набранный с использованием латинской раскладки, будет адекватно отображен на любом компьютере. Эта таблица носит название ASCII (American Standard Code of Information Interchange) по-английски произносится [э́ски], по-русски произносится [а́ски]. Ниже приводится вся таблица ASCII, коды в которой указаны в десятичном виде. По ней можно определить, что когда вы вводите с клавиатуры, скажем, символ “*”, компьютер его воспринимает как код 42(10), в свою очередь 42(10)=101010(2) – это и есть двоичный код символа “*”. Коды с 0 по 31 в этой таблице не задействованы.
Таблица 3.
Таблица символов ASCII
код |
символ |
код |
символ |
код |
символ |
код |
символ |
код |
символ |
код |
символ |
32 |
Пробел |
48 |
. |
64 |
@ |
80 |
P |
96 |
' |
112 |
p |
33 |
! |
49 |
0 |
65 |
A |
81 |
Q |
97 |
a |
113 |
q |
34 |
" |
50 |
1 |
66 |
B |
82 |
R |
98 |
b |
114 |
r |
35 |
# |
51 |
2 |
67 |
C |
83 |
S |
99 |
c |
115 |
s |
36 |
$ |
52 |
3 |
68 |
D |
84 |
T |
100 |
d |
116 |
t |
37 |
% |
53 |
4 |
69 |
E |
85 |
U |
101 |
e |
117 |
u |
38 |
& |
54 |
5 |
70 |
F |
86 |
V |
102 |
f |
118 |
v |
39 |
' |
55 |
6 |
71 |
G |
87 |
W |
103 |
g |
119 |
w |
40 |
( |
56 |
7 |
72 |
H |
88 |
X |
104 |
h |
120 |
x |
41 |
) |
57 |
8 |
73 |
I |
89 |
Y |
105 |
i |
121 |
y |
42 |
* |
58 |
9 |
74 |
J |
90 |
Z |
106 |
j |
122 |
z |
43 |
+ |
59 |
: |
75 |
K |
91 |
[ |
107 |
k |
123 |
{ |
44 |
, |
60 |
; |
76 |
L |
92 |
\ |
108 |
l |
124 |
| |
45 |
- |
61 |
< |
77 |
M |
93 |
] |
109 |
m |
125 |
} |
46 |
. |
62 |
> |
78 |
N |
94 |
^ |
110 |
n |
126 |
~ |
47 |
/ |
63 |
? |
79 |
O |
95 |
_ |
111 |
o |
127 |
DEL |
Чтобы хранить также и коды национальных символов каждой страны (в нашем случае – символов кириллицы) требуется добавить еще 1 бит, что увеличит количество уникальных комбинаций из нулей и единиц вдвое, т.е. в нашем распоряжении дополнительно появится 128 свободных кодов (со 128-го по 255-й), в соответствие которым можно поставить символы русского алфавита.
Таким образом, отведя под хранение информации о коде каждого символа 8 бит, мы получим N=28=256 уникальных двоичных кодов, что достаточно, чтобы закодировать все символы, которые можно ввести с клавиатуры.
Так мы подошли к необходимости познакомиться с еще одной базовой единицей измерения – байтом.
Байт - последовательность из 8 бит. 1 байт = 23 бит = 8 бит. На основании одного байта можно получить 28=256 уникальных двоичных кодов. В современных кодировочных таблицах под хранение информации о коде каждого символа отводится 1 байт. 1 символ = 1 байт. В байтах измеряется объем данных (V) при их хранении и передаче по каналам связи.Например, текст “Добрый день!” занимает объем равный 12 байтам. Биты в байте нумеруются с конца с 0-го по 7-й. Минимальная комбинация на основании одного байта – восемь нулей, максимальная – восемь единиц. Рис. 18а. 11111111(2)=27+26+25+24+23+22+21+20=128+64+32+16+8+4+2+1=255(10) При хранении на физическом уровне каждый байт может быть реализован, например, на базе восьми конденсаторов, каждый из которых либо разряжен (0), либо заряжен (1). Рис. 18b.
|
|
|
Рис. 18а. Байт: минимальная и максимальная комбинации |
Рис. 18b. Байт: соответствие двоичного числа и электрического импульса. |
Возвращаясь к кодировочным таблицам, заметим, что на сегодняшний день в использовании не одна, а несколько кодировочных таблиц, включающих коды кириллицы, – это стандарты, выработанные в разные годы и различными учреждениями. В этих таблицах различен порядок, в котором расположены друг за другом символы кирилличного алфавита, поэтому одному и тому же коду соответствуют разные символы. По этой причине, мы иногда сталкиваемся с текстами, которые состоят из русских букв, но в бессмысленной для нас последовательности.
Например, текст “Компьютерные вирусы”, введенный в кодировке Windows-1251 в кодировке КОИ-8 будет отображен так: ”лПНРШАФЕТОШЕ ЧЙТХУЩ”.
Таблица 9.
Несоответствие кодов символов в различных кодировках кириллицы.
Код |
Windows-1251 |
КОИ-8 |
ISO |
Под национальные кодировки отданы коды с 128-го по 255-й. |
192 |
А |
ю |
Р |
|
193 |
Б |
а |
С |
|
194 |
В |
б |
Т |
Эта проблема разрешима - на каждом компьютере найдутся все основные кодировочные таблицы, и если тест выглядит неадекватно, нужно попробовать перекодировать его, просто указав использовать другую кодировочную таблицу. Но наличие такой проблемы, конечно, вносит неудобства.
Используя 8-битную кодировочную таблицу мы не сможем адекватно увидеть на мониторе и тексты, созданные на тех языках, где используются символы, отличные от латинских и кирилличных, например символы с умляутами в немецком языке.
