Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
4.1 Кодирование чисел. Системы счисления.
Код - это набор условных сигналов для записи или передачи некоторых заранее определенных понятий (рис.4.1).
Рис. 4.1 Примеры систем кодирования
Любой способ кодирования характеризуется наличием основы (алфавит, спектр цветности, система координат, основание системы счисления…) и правил конструирования информационных образов на этой основе.
Система счисления (СС) - способ кодирования числовой информации, т.е. способ записи чисел с помощью некоторого алфавита, символы которого называют цифрами.
Различают системы счисления позиционные и непозиционные. Пример позиционной системы счисления арабская (современная десятичная), непозиционной римская (см. табл. 4.1).
Таблица 4.1
Позиционная СС |
Непозиционная СС |
005 = 5*1 (пять) 050 = 5*10 (пятьдесят) 500 = 5*100 (пятьсот) |
IX = 10-1 = 9 XI = 10+1 = 11 XX = 10+10 = 20 |
В позиционных системах счисления величина, обозначаемая цифрой в записи числа, зависит от её положения в числе (позиции, разряда). Количество используемых цифр называется основанием системы счисления.
Так, в десятичной системе счисления, основание которой равно 10, различают 10 арабских цифр: 0, 1, 2, ..., 9.
В вычислительной технике широко применяют двоичную, восьмеричную и шестнадцатеричную систему счисления.
Двоичная система счисления имеет основание 2, и, следовательно, ее алфавит состоит из двух цифр - 0 и 1; алфавит восьмеричной системы счисления составляют цифры 0, 1, 2, 3, 4, 5, 6, 7; шестнадцатеричной - десять арабских цифр от 0 до 9 и еще шесть символов - А (10), В (11), С (12), D (13), E (14), F (15).
Для любой позиционной системы счисления справедливо следующее правило формирования n-разрядного числа на основании входящих в эту систему цифр:
, (4.1)
где y число;
q основание системы счисления;
yi цифры числа;
i номер позиции (разряда) числа, начиная с 0.
Системы счисления используются для построения на их основе различных кодов в системах передачи, хранения и преобразования информации.
Код (от лат. codex) система условных знаков (символов) для представления различной информации.
Любому дискретному сообщению или знаку сообщения можно приписать какой-либо порядковый номер. Измерение аналоговой величины, выражающееся в сравнении ее с образцовыми мерами, также приводит к числовому представлению информации. Передача или хранение сообщений при этом сводится к передаче или хранению чисел. Числа можно выразить в какой-либо системе счисления. Таким образом будет получен один из кодов, основанный на данной системе счисления.
Каждому разряду числа можно поставить в соответствие какой-либо параметр электрического сигнала, например амплитуду. На рис. 4.2 в качестве примера приведено изображение числа 35 в виде импульсов длительностью τ с разными амплитудами (при разных системах счисления).
Анализ систем счисления и построенных на их основе кодов с позиций применения в системах передачи, хранения и преобразования информации показывает, что чем больше основание системы счисления, тем меньшее число разрядов требуется для представления данного числа, а, следовательно, и меньшее время для его передачи.
Однако с ростом основания существенно повышаются требования к аппаратуре формирования и распознавания элементарных сигналов, соответствующих различным символам. Логические элементы вычислительных устройств в этом случае должны иметь большее число устойчивых состояний.
Основание |
12 |
10 |
8 |
4 |
3 |
2 |
Запись числа (Код числа) |
2В |
35 |
43 |
203 |
1022 |
100011 |
Электрические сигналы (кодовая комбинация) |
Рис. 4.2 Изображение числа 35 в виде сигналов при различных системах счисления
С учетом этих обстоятельств в качестве показателя эффективности системы может быть выбрано число, равное произведению количества различных символов q на количество разрядов N для выражения любого числа. Тогда наиболее эффективной будет система, обеспечивающая минимум значения данного показателя.
Обозначим произведение основания системы q на длину разрядной сетки N, выбранную для записи чисел в этой системе, через С:
С = qN. (4.2)
Если принять, что каждый разряд числа представлен не одним элементом с q устойчивыми состояниями, a q элементами, каждый из которых имеет одно устойчивое состояние, то показатель (4.2) определит условное количество оборудования, которое необходимо затратить на представление чисел в этой системе. В связи с этим показатель (4.2) называют показателем экономичности системы.
Максимальное число, которое можно изобразить в системе с основанием q:
Aq max=qN-1. (4.3)
Из (4.3) можно найти требуемую длину разрядной сетки:
N=logq(Aq max+1). (4.4)
Тогда для любой системы счисления С=q logq(Aq max+1).
Допустим, что величина q является непрерывной величиной. При этом будем рассматривать величину С как функцию от величины q. Теперь если за единицу измерения оборудования принять условный элемент с одним устойчивым состоянием, то для сравнения двух систем счисления можно ввести относительный показатель экономичности:
F= q logq(A2max+1)/[2log2(A2max+1)], (4.5)
позволяющий сравнить любую систему счисления с двоичной.
По правилу приведения логарифмов loga(b)=logc(b)/logc(a) получим:
F=(q∙ln(2))/(2∙ln(q)). (4.6)
На рис. 4.3 представлена зависимость величины F от основания системы счисления q, если функция F непрерывна. Нижняя точка графика соответствует минимуму функции F, определяемому из условия dF/dq=0, что соответствует значению q=e≈2,72.
Рис. 4.4 Зависимость относительного показателя экономичности
от основания системы счисления
Следовательно, с точки зрения минимальных затрат условного оборудования наиболее экономичной является система счисления с основанием 3. Незначительно уступают ей двоичная и четверичная. Системы с основанием 10 и более существенно менее эффективны.
Сравнивая эти системы с точки зрения удобства физической реализации соответствующих им логических элементов и простоты выполнения в них арифметических и логических действий, предпочтение в настоящее время отдается двоичной системе счисления. Действительно, логические элементы, соответствующие этой системе, должны иметь всего два устойчивых состояния. Задача различения сигналов сводится в этом случае к задаче обнаружения (есть импульс или его нет), что значительно проще. Арифметические и логические действия также легче осуществляются в двоичной системе.
Таким образом, для представления любого числа достаточно алфавита, состоящего только из двух символов, что и реализуется при хранении информации в памяти электронных устройств. Ячейка памяти в этом случае может находиться в одном из двух состояний, которые кодируются как 0 и 1. Информационная емкость такой ячейки равна 1 биту.
Число, записанное в позиционной системе счисления с любым основанием, переводится в десятичную систему счисления по правилу (4.1).
Пример:
A(10)=552,25=5102 +5101+ 2100 + 210-1 +510-2
В десятичном числе A(10) цифры 5 и 2, находящиеся на разных позициях, имеют различные количественные значения, при перемещении цифры на следующую позицию ее величина изменяется в 10 раз.
A(10) = 102,839 = 1102 + 0101 +2100 +810-1 +310-2 +910-3
Если вместо 10 взять любое другое натуральное число p > 1, легко построить число в системе счисления с основанием p.
Пусть, например, p = 2. В этой двоичной системе счисления употребляются только две цифры: 0 и 1.
11011,011(2) = 124 + 123 + 022 +121 +120 + 02-1 + 12-2 = 27,375(10)
Каждое целое число может быть записано в системе десятичных цифр, т.е. в виде
A(10)= an10n + an-110n-1 + …+a2102 + a1101 +a0 100,
где n некоторое соответствующее неотрицательное число; числа an, an-1, …, a2, a1, a0 знаки цифр из алфавита аi {0…9}.
Запись некоторого числа в другой системе чисел. Любое число в позиционной системе счисления при любом основании q > 1 может быть записано в естественной форме
может быть представлено степенным рядом
,
где аk любая цифра из алфавита системы основания p, m, 1 число позиций (разрядов) соответственно для целой и дробной частей числа. Для удобства преобразования чисел из одной системы счисления в другую степенной ряд для целой и дробной частей числа представляется эквивалентными выражениями по схеме Горнера:
Счет в различных системах счисления. Счет в различных системах счисления производится от нуля, последовательно прибавляя по единице до тех пор, пока число не достигнет величины очередной степени основания системы. В этом случае единица прибавляется к более старшему разряду, для которого правила выполняются аналогично. Операцию счета в различных системах можно проследить по приведенной ниже таблице. Читателю предлагается заполнить пустые клетки в таблице.
Прибавление единицы к более старшему (k+1)му разряду происходит, когда число, составленное из оставшихся более младших k разрядов составляет pk - 1.
Пример: p = 2, число 0111(2)+1 дает переход единицы из нулевого разряда в первый (в нулевом разряде остался 0), далее из первого во второй (в первом разряде остался 0), и далее в третий, в результате чего получится число 0111(2) + 1 = 7(10) +1 = 8(10) = 23 = 1000(2), k = 3.
p=10 |
p=2 |
p=3 |
p=4 |
p=5 |
p=6 |
p=7 |
p=8 |
p=9 |
p=16 |
p=27 |
0 |
0000 |
0000 |
0000 |
0000 |
000 |
00 |
000 |
0 |
0 |
|
1 |
0001 |
0001 |
0001 |
0001 |
01 |
1 |
1 |
|||
2 |
0010 |
0002 |
0002 |
0002 |
02 |
2 |
2 |
|||
3 |
0011 |
0010 |
0003 |
03 |
3 |
3 |
||||
4 |
0100 |
0011 |
0010 |
0004 |
04 |
4 |
4 |
|||
5 |
0101 |
0012 |
0011 |
005 |
05 |
5 |
5 |
|||
6 |
0110 |
0020 |
0012 |
0011 |
06 |
6 |
6 |
|||
7 |
0111 |
0021 |
0013 |
010 |
07 |
7 |
7 |
|||
8 |
1000 |
0022 |
0020 |
010 |
008 |
8 |
8 |
|||
9 |
0100 |
010 |
9 |
9 |
||||||
10 |
0101 |
0020 |
013 |
A |
A |
|||||
11 |
0102 |
B |
B |
|||||||
12 |
0110 |
C |
C |
|||||||
13 |
0111 |
016 |
D |
D |
||||||
14 |
0112 |
E |
E |
|||||||
15 |
01111 |
0120 |
0033 |
0030 |
017 |
F |
F |
|||
16 |
017 |
10 |
G |
|||||||
17 |
023 |
12 |
H |
|||||||
18 |
13 |
I |
||||||||
19 |
0034 |
14 |
J |
|||||||
20 |
15 |
K |
||||||||
21 |
10101 |
024 |
16 |
L |
||||||
22 |
17 |
M |
||||||||
23 |
18 |
N |
||||||||
24 |
0044 |
19 |
J |
|||||||
25 |
1A |
P |
||||||||
26 |
Q |
|||||||||
27 |
11011 |
10 |
Для проверки правильности заполнения пустых клеток необходимо выполнить обратный перевод записанных чисел. Для этого нужно использовать формулу для перевода числа из системы счисления с основанием p в систему счисления с основанием 10 следующим образом. Вписанное число 221(3) =
= A(10) = 232+231+130 = 25, что соответствует числу, расположенному в соответствующей ячейке десятичной системы счисления.
Перевод чисел с основаниями, являющимися степенью другой системы. Если между основаниями p и q соблюдается связь р1 = qk , где k целое, то каждая цифра числа с основанием p представляется k цифрами алфавита основания q. Так, если p1 = 81 = qk = 23 или
p1 = 271 = qk = 33 то каждая цифра pго числа (восьмеричного или двадцатиcемиричного) представляется k (тремя) цифрами qричного (двоичного или троичного) числа и наоборот каждая группа из k цифр (от запятой влево и вправо) qричного числа заменяется одной pричной цифрой (см. в таблице столбцы, выделенные жирным шрифтом и выделенные другим шрифтом).
Примеры. Используя приведенную выше таблицу соответствия чисел в различных системах счисления и выбирая столбцы, выделенные жирным шрифтом или курсивом, выполним перевод.
C(2)= 11001101011,111101 = C(16) = =66B,F4
Нули перед старшим разрядом целой части и после младшего разряда дробной части можно не записывать.
Такие преобразования используются для сокращения записи двоичных чисел, при переводе чисел из десятичной системы счисления в двоичную, а также при выполнении некоторых операций в ЭВМ.
Перевод целых чисел из одной системы счисления p в другую систему с основанием q. Целое число в системе счисления p может быть представлено эквивалентным числом в системе счисления q:
Ap = Aq = (…((bn-1q + b n-2)q + bn-3)q +… +b1)q + b0
Задача перевода числа из одной системы счисления (p) в другую (q) заключается в отыскании значений цифр bk числа в новой системе счисления.
Заметим, или Аp = Аq = (Аq)1q + b0, где (Аq)1 целое частное, полученное при делении Аp на основание q, b0 остаток, являющийся первой младшей цифрой числа в новой системе счисления, выражен цифрами исходной системы счисления.
При следующем делении частного на основание q будут получены новое целое частное и новый остаток: Аp = Аq = (Аq)2q + b1, где b1 - вторая младшая цифра числа. Продолжая деление целых частных до нулевого значения, находят все цифры числа в новой системе.
Правило перевода целого числа из одной системы счисления в другую.
Примеры.
53(10) = 110101(2) = =125 +124 +023 +122 + 021 + 120 = =32 + 16 + 0 + 4 + 0 +1 = 53(10) 53 |
2 |
|||||
52 |
26 |
2 |
||||
1 |
26 |
13 |
2 |
|||
0 |
12 |
6 |
2 |
|||
1 |
6 |
3 |
2 |
|||
0 |
2 |
1 |
2 |
|||
1 |
0 |
0 |
||||
1 |
53(10) = 65(8) = 681 + 580 = =48 +5 = 53(10) 53 |
8 |
|
48 |
6 |
8 |
5 |
0 |
0 |
6 |
Перевод восьмеричного числа в двоичное проще выполнить, учитывая, что основание 8 является кубической степенью основания 2. Поэтому достаточно каждый разряд восьмеричного числа представить тремя разрядами двоичного числа: 65(8)=110101(2).
53(10) = 35(16) = 3161 + 5160 = 48 +5 = 53(10) 53 |
16 |
|
48 |
3 |
16 |
5 |
0 |
0 |
3 |
Перевод шестнадцатеричного числа в двоичное проще выполнить, учитывая, что основание 16 является четвертой степенью основания 2. Поэтому достаточно каждый разряд восьмеричного числа представить четырьмя разрядами двоичного числа: 35(16)=00110101(2).
22(3) = 231 + 230 = 8(10) = 1000(2) = =123 + 022 +021 + 020 = 8(10) 22 |
2 |
|||
22 |
11 |
2 |
||
0 |
11 |
2 |
2 |
|
0 |
2 |
1 |
2 |
|
0 |
0 |
0 |
||
|
1 |
Основание 8 в системе счисления с основанием 4 будет представлено числом 20(4).
20(4)
33(4) = 17(8) 33 |
20 |
|
20 |
1 |
20 |
7(8) 13(4) |
0 |
0 |
1 |
Воспользуемся основной формулой позиционной системы чисел.
11010 (2) = 124 + 123 + 022 +121 + 020 = 116 + 18 + 04 + 12 + 01 = 26(10)
Перевод дробных чисел из одной системы счисления в другую. Дробная часть числа по схеме Горнера представлена в виде:
Действуя аналогично переводу целой части числа, но, используя операцию умножения, получим правило перевода дробных чисел.
Правило перевода дробных чисел из системы счисления с основанием p в систему счисления с основанием q:
Пример. Перевести число А(10)= 0,65625 в А(2) различными способами, используя перевод непосредственно в двоичную систему, а также через восьмеричную и шестнадцатеричную системы.
а) А(10) А(2) б) А(10) А(8) А(2) в) А(10) А(16) А(2)
0, |
65625 |
2 |
|
1, |
31250 |
2 |
|
0, |
62500 |
2 |
|
1, |
25000 |
2 |
|
0, |
50000 |
2 |
|
1, |
00000 |
А(2) = 0,10101 |
0, |
65625 |
16 |
|
10, |
50000 |
8 |
|
4, |
00000 |
А(2) =0,А4(16)= =0,10101(2) |
А(16)
0, |
65625 |
8 |
|
5, |
25000 |
8 |
|
2, |
00000 |
А(2) = 0,53(8)= =0,10101(2) |
В рассмотренном примере число представляется конечным числом двоичных знаков после запятой. Если же число не представляется конечным числом обратных степеней основания системы, то оно будет представляться бесконечной периодической дробью в этой системе. Отсюда возникает проблема представления числа в ограниченной разрядной сетке памяти компьютера.
Например, число А(10) = 0,3 в двоичной системе представляется бесконечной периодической дробью 0.01001100110011….= 0,0(1001)(2).
Перевод чисел из любой системы счисления p в десятеричную систему чисел. Перевод чисел в десятичную систему может выполняться либо по правилам перевода, либо по формулам степенного ряда, либо по формулам разложения по схеме Горнера. Рассмотрим последовательно применение этих алгоритмов на примерах.
10101101 |
1010 |
|||
10101101(2)=173(10) |
1010 |
10001 |
1010 |
|
1101 |
1010 |
1 |
1010 |
|
1010 |
111 |
0 |
0 |
|
0011 |
1 |
0011(2) = 3(10)
111(2) = 3(10)
По формуле степенного ряда перевод А(2)= 10101101 в А(10) производится следующим образом:
10101101(2)= 127+ 026 + 125+024 + 123 + 122 +021 + 120 =
= 1128 + 064 + 132+ 016+ 18 +14+ 02+ 11 = 173(10)
((((((12+0)2+1)2+0)2+1)2+1)2+0)2+1=173(10)
А(2)= 0,10101=12 -1+ 02 -2 + 12 -3+02 -4 + 12 -5 = 0,5+0,125+0,03125 = =0,65625;
В(8)=0,52=58-1+ 282=0,625+0,03125= 0,65625;
С(16)=0,А8=10161 + 8162=0,625+0,03125= 0,65625;
A = ((((12-1+0)2-1+1)2-1+0)2-1+1)2-1=0,65625(10);
B = (58-1+2)8-1=0,65625(10);
C = (1016-1+8)16-1=0,65625(10);
А(2)А(10) В(8)В(10) С(16)С(10)
0, |
А8 |
А |
|
6, |
90 |
А |
|
5, |
А0 |
А |
|
6, |
40 |
А |
|
2, |
80 |
А |
|
5, |
00 |
С(16)0,65625(10)
0, |
10101 |
1010 |
|
1, |
0101 |
101, |
01 |
110, |
10010 |
1010 |
|
1, |
0010 |
100, |
10 |
101, |
10100 |
1010 |
|
1, |
0100 |
101, |
00 |
110, |
01000 |
1010 |
|
0, |
1000 |
010, |
00 |
010, |
10000 |
1010 |
|
1, |
0000 |
1000, |
00 |
101, |
00000 |
А(10)=0,65625 |
6(10)
5(10)
6(10)
5(10)
2(10)
+
+
+
+
0, |
52 |
12 |
|
1, |
24 |
5, |
2 |
6, |
44 |
12 |
|
1, |
10 |
4, |
4 |
5, |
50 |
12 |
|
1, |
20 |
5, |
0 |
6, |
20 |
12 |
|
40 |
|
2, |
0 |
2, |
40 |
12 |
|
1, |
00 |
4, |
0 |
5, |
00 |
0,52(8)0,65625(10) |
+
+
+
+
+
Арифметические операции в системе чисел
Посмотрим, как проводятся расчеты в другой системе чисел. Пусть основанием системы чисел является цифра 6. Вначале рассмотрим операции с «однозначными» числами. (Однозначными в данном случае будут числа 0, 1, 2, 3, 4, 5.) Этим основным операция нужно учиться, как таблице умножения.
Сложение. Если одним членом некоторой суммы является 0, то сумма равна второму члену. Поэтому суммирование с нулем не рассматривается в силу очевидности.
Построим таблицу сложения однозначных чисел. В первом столбце и первой строке записаны цифры, составляющие алфавит шестеричной системы, кроме 0; на пересечении i-ой строки и j-го столбца находится сумма ai и aj , представленная в шестеричной системе.
Получается следующая таблица:
+ |
1 |
2 |
3 |
4 |
5 |
1 |
2 |
3 |
4 |
5 |
10 |
2 |
3 |
4 |
5 |
10 |
11 |
3 |
4 |
5 |
10 |
11 |
12 |
4 |
5 |
10 |
11 |
12 |
13 |
5 |
10 |
11 |
12 |
13 |
14 |
Например, сумма 3 и 5 находится на пересечении строки с цифрой 3 и столбца с цифрой 5: 3(6) + 5(6) = 12(6).
А теперь посмотрим, как осуществляется суммирование многозначных чисел в той же системе счисления с основанием 6.
Определим сумму 315 + 543. Пусть эти числа записываются в виде:
315 = 3100 + 110 + 5 и 543 = 5100 + 410 + 3.
(Здесь числа 10 и 100 обозначают числа в шестеричной системе чисел.)
Учитывая коммутативность и ассоциативность операции сложения, и используя дистрибутивное свойство, получим форму:
315 + 543 = (3 + 5) 100 + (1 + 4) 10 + (5 + 3).
Найдем значение последнего сложения из таблицы: 5 + 3 = 12 = 110 + 2. Откуда:
315 + 543 = (3 + 5) 100 + (1 + 4 + 1) 10 + 2.
Рассмотрим опять последний член, содержащий операцию сложения. Эта сумма составляется на основе таблицы: (1 + 4) + 1 = 5 + 1 = 10, поэтому:
315 + 543 = (3 + 5 + 1) 100 + 010 + 2.
Если еще раз посмотреть последний член, содержащий операцию сложения: 3 + + 5 +1 = 3 + 10 = 13 = 110 + 3, то получится выражение:
315 + 543 = 11000 + 3100 + 010 + 2 = 1203 .
Процессом сложения доказывается, что применяется такой же метод, как и при сложении в десятичной системе чисел, поэтому операция сложения здесь также может быть осуществлена с помощью записи отдельных чисел друг под другом:
315
+543
1302
Процесс сложения идет таким образом: 5 + 3 = 12 (из таблицы): записывается 2, а 1 в старшем разряде суммируется с предыдущим столбцом; 1+4+1=10: записывается 0, 1 суммируется со столбцом, стоящем слева; 1+3+5=13: записывается 3, и, поскольку нет больше столбцов, слева записывается 1.
Легко видеть, что и сложение большего количества членов, и операция вычитания осуществляются подобно тому, как это делается в десятичной системе чисел.
Умножение. В таблице умножения в системе счисления с основанием 6 представлены произведения однозначных чисел. Умножение на 0 и здесь не следует отдельно записывать, так как в случае, когда один из сомножителей 0, то и результат всего произведения будет 0. Аналогично не нужно приводить произведения, одним из сомножителей которых является 1, так как в этих случаях результат произведения всегда равняется другому сомножителю.
Таблица умножения в системе счисления с основанием 6 имеет следующий вид:
2 |
3 |
4 |
5 |
|
2 |
4 |
10 |
12 |
14 |
3 |
10 |
13 |
20 |
23 |
4 |
12 |
20 |
24 |
32 |
5 |
14 |
23 |
32 |
41 |
Также при пересечении соответствующей строки и соответствующего столбца можно получить результат произведения. Например, 35 = 23. Действительно:
3 5 = 5 + 5 + 5 = 5 + (1 + 4) + (2 + 3) =
= (5 + 1) + (4 + 2) + 3 = 10 + 10 + 3 = 23.
С помощью таблицы умножения также может быть определено произведение многозначных чисел. Посмотрим, например, как определяется произведение двух шестеричных чисел 315 и 543. Разложим оба числа на множители:
315543 = (3100 + 110 + 5) (5100 + 410 + 3).
На основе дистрибутивного свойства операции данное произведение разлагается таким образом:
315543 = (3100 + 110 + 5)5100 + (3100 + 110 + 5)410 + (3100 + +110+5)3.
В конечном итоге следует вычислить три произведения, а затем полученные произведения суммировать.
Рассмотрим сначала последнее слагаемое. Используя дистрибутивное и ассоциативное свойство, а также коммутативность операции умножения, получим следующее выражение:
(3100 + 110 + 5) 3 = (33) 100 + (13) 10 + (53).
Определив отдельные произведения из таблицы умножения, получим:
3153 = 13100 + 310 + 23 = 1300 + 30 + 23 = 1353.
В предпоследнем члене приходится определить результат умножения 315410. Произведение первых двух сомножителей 2112, все произведение 211210 = 21120. Таким же образом определим первое слагаемое: 243100. Сложение отдельных произведений осуществляется по способу, приведенному выше:
1353
21120
+243100
310013
Знаки 0 в конце отдельных чисел могут быть пропущены, но оговаривается, что каждое частное произведение записывается левее на одно место. Если записать все произведение, получится следующее:
315*543
1353
2112
2431
310013
Метод осуществляется автоматически, как и в десятичной системе чисел. Отдельно подсчитываются все «частные произведения», и затем они суммируются. Вначале осуществляется умножение на 3: 53 = 23, записывается 3, остается 2; 13 = 3, прибавляя остаток 3 + 2 = 5, записывается и остается 0; 33 = 13 и остатка нет; поскольку это было последнее число, то записывается 13. Затем проводится умножение на 4: 54 = 32, записывается 2, но на одно место левее и остается 3; 14 = 4, прибавляя остаток 4+3 = 11, записывается и остается 1; 34 = 20, прибавляя остаток 20 + 1 = 21, и так как произведение закончилось, все число записывается. Наконец, проводится умножение на 5: 55= = 41, записывается цифра 1 опять на одно место левее записывается и остается 4; 15 = 5, прибавляя остаток: 5 + 4 = 13, записывается 3, остается 1; 35 = 23, прибавляя остаток: 23+1 = 24 и, поскольку произведение закончено, все число записывается.
После этого следует осуществить сложение частных произведений. Последняя цифра записывается без изменения. Делая шаг на одну позицию влево: 5+2=11, записывается последняя цифра 1 и остается 1. Делая шаг влево еще раз на одну позицию, 3+1+1=5, прибавляя остаток: 5 + 1 = 10, записывается 0, остается 1. Шагая влево опять на одну позицию: 1+1+3=5, прибавляя остаток: 5+1=10, записывается 0 и остается 1. Опять делаем шаг влево на одну позицию: 2+4=10, прибавляя остаток: 10+1=11, записывается 1, остается 1. Наконец, прибавляя остаток к первому знаку: 2+1= 3, записывается 3.
Значения произведений и сложений однозначных чисел выписываются из таблиц, приведенных выше.
Деление как повторное вычитание. Операция деления может быть выполнена в виде повторного вычитания. Пусть делится, например, число 3440314 на 512. (Числа шестеричной системы.) Вместо того чтобы брать в качестве делимого числа 512, 2512, , целесообразно рассматривать числа 512, 5120, 51200, 512000, 5120000, Как видно, последнее число уже больше, чем делимое, но предпоследнее еще меньше. Поэтому число 3440314 делится на 512000; итак, вычитание осуществляется не шагами в 1, а шагами в 1000. Поскольку в делителе стоит 0 на последних трех местах, то неважно, что стоит на последних трех местах делимого; проще всего будет записать туда также знаки 0. Следовательно, сейчас число 3440000 делится на 512000. На самом деле рассматривается деление 3440:512, так как сокращение на 1000 не меняет результата частного. Выполняя операцию деления с остатком, получим:
3440 - 4512 = 3440 - 3252 =144.
Таким образом, 3440314 - 4512000 = 3440000 3252000 + 314 = 144000 + 314 = =144314.
Теперь уже только число 144314 приходится делить на 512. Так как данное число меньше, чем 512000, оно делится на 51200, точнее, делится даже не число 144314, а число 144300. Подобно предыдущему случаю, вместо настоящего деления проводится деление числа 1443 на 512. Из операции деления с остатком получится результат: 1443 2512 = 1443 2512 = 15, то есть:
144314 251200 = 144300 142400 + 14 = 1500 + 14 = 1514.
Далее число 1514 делится на 5120, точнее, делится число 1510, т.е. вместо этого число 151 делится на 512. Очевидно, результатом деления с остатком является равенство: 151 = 0512 + 151. На основе данного рассуждения этот шаг описывается следующим образом:
1514 05120 = 1510 0 + 4 = 1514.
(По существу, данный шаг пришлось делать только с целью обозначения деления на 5120.)
Наконец, делением числа 1514 на 512 определяется равенство: 1514= 2512+50. Покажем запись всей суммарной процедуры деления. При этом не учитываются цифры, вместо которых записывался знак 0 на соответствующем шаге процедуры.
3440314: 512 = 4202
3252
1443
1424
151
0
1514
1424
50
Число, стоящее на правой стороне деления, получено следующим образом. На основе ассоциативности операции умножения, вычитаемые на отдельных шагах записываются так: 5124000, 512200 и 5122. Следовательно, частным является именно число 4202, и если всегда только первый знак записывается, то путем записи друг за другом отдельных, полученных таким образом знаков, получится именно частное.
Как было упомянуто выше, шестеричная система была выбрана потому, что число 6 не слишком большое и не слишком маленькое. Если основное число слишком большое, то и таблицы операций получаются слишком большие, следовательно, слишком большое количество основных операций необходимо знать наизусть. Если основное число слишком маленькое, то отдельные числа будут «слишком длинные». В таком случае 10, как основное число, является довольно удачным выбором.
Контрольные задания
4.2 Хранение данных в ЭВМ
Сегодня ЭВМ является основным инструментом для хранения и обработки информации. ЭВМ может хранить информацию различного типа, обрабатывать различные виды информации, а также делать логическое выводы. ЭВМ хранит информацию в зависимости от ее типа в различных форматах.
Для проведения вычислительных операций компьютер хранит целые числа в двоичной системе в формате со знаком или без знака, вещественные числа в форматах с фиксированной или плавающей запятой, отводя под каждое число определенное количество двоичных ячеек. Хранение логических переменных требует минимального количества двоичных ячеек, т.к. логическая переменная может принимать только значения “да ” или “нет”, т. е. 1 или 0. Хранение символьной, звуковой, видео информации также осуществляется по строго разработанным форматам, которые используются различными программными продуктами, что делает их совместимыми.
Рассмотрим формы и форматы хранения данных, и обработку некоторых видов информации подробнее.
Представление числовых данных в ЭВМ. Элементом для хранения единицы информации является двоичная ячейка, в которой может быть записано либо 0, либо 1. Объем информации, хранимой в такой ячейке, один бит. Восемь таких ячеек, объединенных в группу, позволяет хранить байт (8 бит) информации. Типичным для современных компьютеров объединением таких ячеек является объединение по 4 или 8 байт.
Представление целых чисел. Естественная форма. Используя только один байт, можно записать 28 =256 различных положительных чисел в диапазоне от 0 до 255.
Число |
Разряды двоичного числа |
|||||||
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
127 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
255 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Заметим, что все ячейки отданы под представление самого числа. Очевидно, что если первый разряд выделить под знак числа, то в этом же количестве разрядов можно поместить числа в два раза меньшие по модулю, т.е. от 128 до +127, всего 256 чисел. Например, числа 127 и +127 записываются, как указано в таблице (заштрихованный первый разряд обозначает знак числа).
Число |
Разряды двоичного числа |
|||||||
127 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
-127 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
В двух байтах можно расположить расширенный ряд натуральных чисел в диапазоне от 0 до 65535, а целые числа в диапазоне от 32767 до +32767.
В алгоритмических языках введено понятие типа данных. Примерами типов данных являются символы, целые, числа с плавающей точкой. Другие типы данных включают адреса памяти и машинные команды, которые управляют работой компьютера. В языках С++ и Паскаль имеется предопределенный набор типов данных, который позволяет представлять целые числа, числа с плавающей точкой и отдельные символы. Следует отметить, что в некоторых языках (например, в С++) размеры байта и машинного слова различны в разных машинах. Поэтому следует говорить об этих величинах как о машинно-зависимых понятиях.
Существенным недостатком естественной формы представления числа является ограниченный диапазон представления величин. Если результаты вычислений выходят за допустимые пределы, то наступает переполнение разрядной сетки и результат искажается. В персональных ЭВМ обычно производится автоматический переход к представлению данных в нормальной форме.
Представление вещественных чисел в форме с плавающей точкой. Нормализованная форма. Вещественные константы, даже не отличаясь от целых констант по значению, имеют другую форму внутреннего представления в ЭВМ. При операциях с такими константами эта форма требует использования арифметики с плавающей точкой.
В математике форма представления вещественных чисел разнообразна. Любое число можно представить в различной форме записи, например,
A = 125, 25 = 1252510-3 = 0,12525103 = 0,0012525105.
Поэтому для однозначного понимания представления числа в виде кода ЭВМ необходимо ввести стандарт для записи вещественных чисел. Такой стандарт называется нормализованной формой представления вещественного числа. Любое число в нормальной форме представляется в виде
,
где мантисса числа A, q основание системы счисления, порядок числа A, причем мантисса должна отвечать условию:
.
Ограничение справа требует, чтобы мантисса представлялась правильной дробью, ограничение слева - чтобы после запятой присутствовала значащая цифра (не 0). Так, число 125,25 представляется в нормализованной форме как 0,1252510 3.
Значения вещественных типов позволяют определить произвольное число лишь с некоторой точностью, зависящей от внутреннего формата вещественного числа. В таблице представления вещественных типов указано количество знаков в мантиссе, что определяет точность представления числа, и диапазон десятичного порядка, который определяет диапазон чисел, охватываемых данным типом.
Длина в байтах |
Название типа в языке Паскаль |
Мантисса, значащие цифры |
Диапазон десятичного порядка |
4 |
single |
7…8 |
45…+38 |
6 |
real |
11…12 |
39…+38 |
8 |
double |
15…16 |
324…+308 |
10 |
extended |
19…20 |
4951…+4932 |
Для представления чисел в нормальной форме используются фиксированные форматы разной длины. Например, для типа длиной в 4 байта в разрядной сетке форматов отводятся места для знака мантиссы (нулевой разряд), знака порядка (первый разряд), значения порядка (6 разрядов, со 2-го по 7-ой), в остальные разряды записывается мантисса числа. В других форматах первый байт не изменяется, а увеличивается область под мантиссу. На рисунке представлена разрядная сетка в формате 4 байта.
Знак |
Знак |
||||||||||
mA |
PA |
PA |
mA |
||||||||
0 |
1 |
2 |
. . |
7 |
8 |
9 |
… |
30 |
31 |
Формат числа в нормальной форме
Диапазон представления чисел можно оценить по максимальному значению: , где
При двоичном представлении числа:
Представление нормальной формы в ЭВМ имеет следующие особенности:
Теперь характеристика может принимать значения в диапазоне =7F16 и под ее значение отводятся 7 разрядов (27 -1 =127). Очевидно, если Рх=4016, то РА = 0, если Рх< 4016, то порядок отрицательный (РА < 0), при Рх> 4016 - порядок положительный (РА > 0). Если Рх < 0 или Рх > 7F16, то значение характеристики пропадает, и результаты искажаются.
Действительно, если в формулу подставить 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.
Знак числа определяется по первой шестнадцатеричной цифре кода числа.
Мантисса числа
Характерис-тика числа
Знак числа
0 |
100 |
0100 |
1010 |
0000 |
0010 |
1110 |
1000 |
0000 |
A16=44А02Е80>0 |
1 |
100 |
0100 |
1010 |
0000 |
0010 |
1110 |
1000 |
0000 |
B16=C4А02Е80<0 |
0 |
1 |
31 |
Представление чисел в формате в 4 байта.
Машинные коды чисел и действия над ними. В ЭВМ используются специальные машинные коды чисел. Благодаря такому представлению чисел все арифметические операции над числами сводятся к операциям арифметического сложения и сдвигу их кодов вправо или влево. При этом учитываются знаки чисел, автоматически определяется знак результата и признаки возможного переполнения разрядной сетки заданных форматов. В ЭВМ применяются прямой, обратный и дополнительный коды. Замена операции вычитания на сложение может осуществляться с помощью обратного и дополнительного кодов. Сущность их заключается в том, что вычитаемое B, как отрицательное число, представляется в виде дополнения до некоторой константы K, при которой выполняется условие Обратный и дополнительный коды отличаются выбором значения константы K.
Пусть K = . Следовательно, операцию C = A - B, где A и B - целые положительные числа в любой системе счисления, можно представить в виде:
,
где 10 - основание любой системы счисления;
- константа образования дополнительного кода;
- константа образования обратного кода.
n - количество разрядов представления целых чисел в выбранной системе счисления; для дробных чисел n = 0.
Из выражения следует, что из полученной суммы нужно исключить добавленную константу.
Пример. Пусть A = 46, B = 38. Найти C = A - B.
Константа для дополнительного кода для обратного кода Тогда , .
+
46
61
107 - 100 = 7
+ 1
8
A
(-B)ОБР
C
46
62
108 - 100 = 08
(-B)ДОП
A
+
C
Из примера следует, что операция вычитания заменяется операцией сложения с дополнениями. Из полученной суммы константа дополнительного кода компенсируется просто ликвидацией единицы переноса из старшего разряда суммы. Константа обратного кода компенсируется путем исключения единицы переноса из старшего разряда суммы и добавления ее к младшему разряду суммы, т.е. требуется дополнительная операция сложения. Поэтому в ЭВМ для выполнения действий используется дополнительный код, а обратный для образования дополнительного кода.
По результатам действий над числами с дополнениями легко определить знак суммы и наличие переполнения разрядной сетки. Переполнение разрядной сетки происходит, если сумма равна или больше по модулю константы образования дополнительного кода.
Пример 2. Пусть A = 46, B = 38. Найти С1 = В - А, С2 = А + В, С3 = -А - В.
Определим (-А)ДОП = 102 - 46 = 54: (-В)ДОП = 102 - 38 = 62.
54
62
116 - 100 = 16
(C3)ДОП
C3 = 16-100 = -84
+
(-A)ДОП
(-B)ДОП
+
38
54
92 - 100 = -08
B
(-A)ДОП
C1
(C1)ДОПДОП
ДОП ДОП
38
46
84
+
C2
Из примеров 1 и 2 следует, что при сложении чисел с разными знаками (С и С1), наличие единицы переноса из старшего разряда является признаком положительного результата (С), отсутствие переноса (С1) - признаком отрицательного результата, при этом константа образования дополнительного кода не скомпенсирована и осталась в сумме.
При сложении чисел с одинаковыми знаками признаки противоположны: отсутствие переноса единицы из старшего разряда при положительных слагаемых (С2) является признаком положительного результата, наличие переноса при отрицательных слагаемых (С3) - признаком отрицательного, при этом одна константа компенсируется переносом, а вторая сохраняется в сумме. Эти же признаки в суммах (С2 и С3) указывают на отсутствие переполнения разрядной сетки для записи результатов (результаты имеют два десятичных разряда).
Пример 3. Пусть A = 61, B = 72. Найти С4 = А + В, С5 = -А - В.
Определим (-А) ДОП = 102 - 61 = 39: (-В) ДОП= 102 - 72 = 28.
61
72
133 > 100
+
A
B
39
28
67 > |100|
+
(-B)ДОП
(-A)ДОП
Здесь в обоих случаях при сложении чисел с одинаковыми знаками происходит переполнение разрядной сетки, признаками которого являются: наличие переноса из старшего разряда при положительных слагаемых (С4) и отсутствие переноса при отрицательных (С5). При получении суммы С5 перенос отсутствует, т.е. обе константы 100 остались в полученном результате. Следовательно, результат 67-100 = -33, -33 - 100 = - 133 по модулю больше константы и в отведенные два разряда не умещается.
Рассмотрим образование кодов в двоичной системе счисления на примере А=27. Знак числа, как было указано выше, кодируется 0 или 1, записывается перед старшим разрядом и отделяется для наглядности точкой, которая не является частью кода и в разрядной сетке не отражается. Для простоты примем, что задана разрядная сетка в один байт, т.е. 8 двоичных разрядов, из которых один отводится под знак, а 7 для записи числа.
А10 = 27 = А16 = 1B = А2 = 11011.
Примем константу для дополнительного кода: К10 = 28 = К2 = 101000 = 100000000 и константу для обратного кода: К10 = 28 - 1 = К2 = 101000 - 1 = 11111111.
В таблице приведены прямой, обратный и дополнительные коды для чисел 27 и -27.
Число |
[A]ПК |
[A]ОК |
[A]ДК |
11011 |
0.0011011 |
0.0011011 |
0.0011011 |
11111111 |
100000000 |
||
00011011 |
00011011 |
||
- 11011 |
1.0011011 |
1.1100100 |
1.1100101 |
Приведем правила образования машинных кодов:
Определение прямого кода отрицательного числа по его обратному и дополнительному коду производится по тем же правилам.
Числа, представленные в естественной форме, в памяти ЭВМ представлены в дополнительном коде, числа в нормальной форме хранятся в прямом коде. Действия в ЭВМ выполняются в прямом и дополнительном коде, обратный код используется для получения дополнительного кода.
Действия над числами, представленными в естественной форме. При сложении кодов чисел в естественной форме следует учитывать следующие положения:
Очевидно, что если переносы согласуются, т.е. оба отсутствуют или оба присутствуют, то переполнение разрядной сетки не происходит.
Пример 4. Дано: А = 267, В = 186. Найти сумму чисел при разных знаках слагаемых в 16-ти разрядном формате.
Решение.
А10 = 267 = А16 = 10B = A2 = 100001011
B10 =186 = B16 = BA = A2 =10111010
[A]ПК = 0.000000100001011; [B]ПК = 0.000000010111010.
[-A]ДК = 1.111111011110101; [-B]ДК = 1.111111101000110.
+
С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 =111000101=128 +127 + 126 + 122 +120 =256 + 128 +64 + 4 + 1 = 453;
C1=267 + 186 = 453.
C2= 1010001= 5116 = 516 + 1 = 81; C2 = 267 - 186 = 81;
C3 = - 1010001 = -[(((((12 + 0)2 +1)2 + 0)2 + 0)2 + 0)2 + 1] = -81.
C4 = - 111000101 = - 1C516 = - [(116 + 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 не согласуются. В этих случаях в больших ЭВМ вырабатывается запрос на прерывание программы, в некоторых типах малых ЭВМ производится автоматический переход к нормальной форме представления данных.
Действия над числами, представленными в нормальной форме. При алгебраическом сложении чисел, представленных в нормальной форме, необходимо учитывать:
Пусть , и . Тогда разность порядков и .
,
где - мантисса, приведенная к большему порядку путем ее сдвига вправо на P разрядов основания q.
Нормализация мантиссы суммы производится сдвигом ее влево на одну шестнадцатеричную цифру и уменьшением характеристики на единицу. После этого в регистре сумматора формируется результат: в нулевой разряд заносится знак большего по модулю слагаемого, в 1-7 разряды - характеристика и в 8-31 разряды мантисса результата в прямом коде.
Реализацию этих положений рассмотрим на примерах.
Пример 6. Даны два числа: A = В = Найти С1=А + В, С2= А В.
Решение. Будем представлять мантиссы и характеристики чисел в шестнадцатеричной системе: А16 = F,D; В16 = 0,7.
mА = 0,FD; PXA = 40 + 1= 41;
mB = 0, 7; PXB = 40 + 0 = 40.
Замечание. Напомним, что характеристика смещена в область положительных (беззнаковых) значений на 26 = 4016.
P= 41 40 = 1; .
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) и сохраняется мантисса в прямом коде.
0100 |
0010 |
0001 |
0000 |
0100 |
0000 |
0000 |
0000 |
4 |
2 |
1 |
0 |
4 |
0 |
0 |
0 |
PXC1
mC1
Знак
С1
Ответ.
или С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 = A B
[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.
mA = 0,E7; PXA = 40 + 2 = 42;
mB = 0,DBC; PXB = 40 + 2 = 42;
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.
Ответ. C1 0100 0001 1011 0100 0000 0000 0000 0000 или С1 41B40000.
Так как знаки слагаемых разные и перенос отсутствует, то результат отрицательный, представлен в дополнительном коде и должен быть преобразован в прямой код.
2. C2 = B A
[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
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
32 |
46 |
. |
60 |
< |
74 |
J |
88 |
X |
102 |
f |
116 |
t |
|
33 |
! |
47 |
/ |
61 |
= |
75 |
K |
89 |
Y |
103 |
g |
117 |
u |
34 |
" |
48 |
0 |
62 |
> |
76 |
L |
90 |
Z |
104 |
h |
118 |
v |
35 |
# |
49 |
1 |
63 |
? |
77 |
M |
91 |
[ |
105 |
i |
119 |
w |
36 |
$ |
50 |
2 |
64 |
@ |
78 |
N |
92 |
\ |
106 |
j |
120 |
x |
37 |
% |
51 |
3 |
65 |
A |
79 |
O |
93 |
] |
107 |
k |
121 |
y |
38 |
& |
52 |
4 |
66 |
B |
80 |
P |
94 |
^ |
108 |
l |
122 |
z |
39 |
' |
53 |
5 |
67 |
C |
81 |
Q |
95 |
_ |
109 |
m |
123 |
{ |
40 |
( |
54 |
6 |
68 |
D |
82 |
R |
96 |
` |
110 |
n |
124 |
| |
41 |
) |
55 |
7 |
69 |
E |
83 |
S |
97 |
a |
111 |
o |
125 |
} |
42 |
* |
56 |
8 |
70 |
F |
84 |
T |
98 |
b |
112 |
p |
126 |
~ |
43 |
+ |
57 |
9 |
71 |
G |
85 |
U |
99 |
c |
113 |
q |
127 |
|
44 |
, |
58 |
: |
72 |
H |
86 |
V |
100 |
d |
114 |
r |
128 |
|
45 |
- |
59 |
; |
73 |
I |
87 |
W |
101 |
i |
115 |
s |
Таблица 2
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
Код |
Символ |
128 |
А |
144 |
Р |
160 |
а |
176 |
░ |
192 |
└ |
208 |
╨ |
224 |
р |
240 |
≡ |
129 |
Б |
145 |
С |
161 |
б |
177 |
▒ |
193 |
┴ |
209 |
╤ |
225 |
с |
241 |
± |
130 |
В |
146 |
Т |
162 |
в |
178 |
▓ |
194 |
┬ |
210 |
╥ |
226 |
т |
242 |
≥ |
131 |
Г |
147 |
У |
163 |
г |
179 |
│ |
195 |
├ |
211 |
╙ |
227 |
у |
243 |
≤ |
132 |
Д |
148 |
Ф |
164 |
д |
180 |
┤ |
196 |
− |
212 |
╘ |
228 |
ф |
244 |
⌠ |
133 |
Е |
149 |
Х |
165 |
е |
181 |
╡ |
197 |
┼ |
213 |
╒ |
229 |
х |
245 |
⌡ |
134 |
Ж |
150 |
Ц |
166 |
ж |
182 |
╢ |
198 |
╞ |
214 |
╓ |
230 |
ц |
246 |
|
135 |
З |
151 |
Ч |
167 |
з |
183 |
╖ |
199 |
╟ |
215 |
╫ |
231 |
ч |
247 |
≈ |
136 |
И |
152 |
Ш |
168 |
и |
184 |
╕ |
200 |
╚ |
216 |
╪ |
232 |
ш |
248 |
° |
137 |
Й |
153 |
Щ |
169 |
й |
185 |
╣ |
201 |
╔ |
217 |
┘ |
233 |
щ |
249 |
▪ |
138 |
К |
154 |
Ъ |
170 |
к |
186 |
║ |
202 |
╩ |
218 |
┌ |
234 |
ъ |
250 |
∙ |
139 |
Л |
155 |
Ы |
171 |
л |
187 |
╗ |
203 |
╦ |
219 |
█ |
235 |
ы |
251 |
√ |
140 |
М |
156 |
Ь |
172 |
м |
188 |
╝ |
204 |
╠ |
220 |
▄ |
236 |
ь |
252 |
ⁿ |
141 |
Н |
157 |
Э |
173 |
н |
189 |
╜ |
205 |
═ |
221 |
▌ |
237 |
э |
253 |
² |
142 |
О |
158 |
Ю |
174 |
о |
190 |
╛ |
206 |
╬ |
222 |
▐ |
238 |
ю |
254 |
■ |
143 |
П |
159 |
Я |
175 |
п |
191 |
┐ |
207 |
╧ |
223 |
▀ |
239 |
я |
255 |
Таким образом, фраза “Cat Вася.” будет храниться как следующая последовательность бинарных сигналов:
С |
a |
t |
В |
а |
с |
я |
. |
|
67 |
97 |
116 |
32 |
130 |
160 |
225 |
239 |
46 |
01000011 |
01100001 |
01110100 |
00100000 |
10000010 |
10100000 |
11100001 |
11101111 |
00101110 |
Однако, используя 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 байт, такое кодирование экономичнее, чем чистый Юникод.
Контрольные задания
В отличие от символьной для десятичной цифровой информации при байтовой организации в целях экономии памяти и удобства обработки используют специальные форматы кодирования десятичных чисел - зонный и упакованный. При этом десятичные числа рассматриваются как десятичные со знаком, имеющие переменную длину.
В упакованном формате для каждой десятичной цифры отводится по четыре двоичных разряда (полбайта), при этом знак числа кодируется в крайнем правом полубайте числа (1100 - знак «+», 1101 знак «-»).
Структура поля упакованного формата:
Упакованный формат применяется обычно в ЭВМ при выполнении арифметических операций сложения, вычитания, умножения, деления и сравнения.
В зонном формате для каждой десятичной цифры отводится по целому байту, при этом старшие полубайты (зона) каждого байта (кроме самого младшего) заполняются кодом 1111, а в младших (левых) полубайтах обычным образом кодируются десятичные цифры. Старший полубайт (зона) самого младшего (правого) байта используется для кодирования знака числа.
Структура поля зонного формата:
3онный формат удобен для представления вводимой в ЭВМ десятичной информации, когда каждая десятичная цифра вместе с кодом зоны занимает целый байт.
Пример. Число -283(10) = -0010 1000 0011(2-10) в ЭВМ будет представлено:
Хранение графической информации. Современные компьютерные системы способны обрабатывать не только простейшие текстовые и цифровые данные. Они позволяют работать также с изображениями, аудио- и видеоинформацией. В отличие от методов представления символьной и числовой информации, для представления изображений, аудио- и видеоинформации пока не существует общепризнанных стандартов.
Наиболее распространенные из существующих методов представления изображений можно разделить на две большие категории: растровые методы и векторные методы.
При растровом методе изображение представляется как совокупность точек, называемых пикселем (pixel сокращение от picture element - элемент изображения). Общепринятым на сегодняшний день считается представления черно-белых иллюстраций в виде комбинаций точек с 256 градациями серого цвета, и таким образом, для кодирования яркости любой точки обычно достаточно 8-разрядного двоичного числа.
Для кодирования цветных графических изображений применяется принцип декомпозиции произвольного цвета на основные составляющие. В качестве таких составляющих используют три основных цвета: красный (Red,R), зеленый (Green,G) и синий (Blue,B). На практике считается, что любой цвет, видимый человеческим глазом, можно получить путем механического смешения этих трех основных цветов. Такая система кодирования называется системой RGB (по первым буквам названий основных цветов).
Если для кодирования яркости каждой из основных составляющих использовать по 256 значений (восемь двоичных разрядов), как это принято для полутоновых черно-белых изображений, то на кодирование цвета одной точки надо затратить 24 разряда (рис.4.8) .
Рис.4.1 Кодирование цветного изображения
Векторные методы позволяют избежать проблем масштабирования, характерных для растровых методов. В этом случае изображение представляется в виде совокупности линий и кривых. Вместо того, чтобы заставлять устройство воспроизводить заданную конфигурацию пикселей, составляющих изображение, ему передается подробное описание того, как расположены образующие изображение линии и кривые. На основе этих данных вычислительное устройство в конечном счете и создает готовое изображение. Однако векторная технология не позволяет достичь фотографического качества изображений объектов, как при использовании растровых методов.
Далее перейдем к рассмотрению кодирования звуковой информации.
На слух человек воспринимает упругие волны, имеющие частоту где-то в пределах от 16 Гц до 20 кГц (1 Гц - 1 колебание в секунду). В соответствии с этим упругие волны в любой среде, частоты которых лежат в указанных пределах, называют звуковыми волнами или просто звуком. В учении о звуке важны такие понятия как тон и тембр звука. Всякий реальный звук, будь то игра музыкальных инструментов или голос человека, - это своеобразная смесь многих гармонических колебаний с определенным набором частот.
Колебание, которое имеет наиболее низкую частоту, называют основным тоном, другие - обертонами.
Тембр - разное количество обертонов, присущих тому или иному звуку, которое придает ему особую окраску.
Музыкальный звук можно характеризовать тремя качествами:
тембром, т. е. окраской звука, которая зависит от формы колебаний;
высотой, определяющейся числом колебаний в секунду (частотой);
громкостью, зависящей от интенсивности (амплитуды) колебаний.
Громкость звука зависти от давления, возникающего при прохождении звуковой волны в жидкой и газообразной среде, которое непосредственно воспринимается ухом. Громкие звуки создают большое давление, тихие - малое. Давление измеряется в Паскалях, однако в акустике звуковое давление обычно измеряется в децибелах (дБ) относительно порога слышимости. По определению, величина порога принята равной pt=0,00002Па=20мкПа. Порог слышимости принимается за 0дБ, а громкость вычисляется как L=20*log10(p/pt), где L [дБ] - громкость (в смысле звукового давления), p [Па]- звуковое давление, pt [Па]- порог слышимости. При этом: все слышимые звуки имеют положительную величину громкости; неслышимые (ниже порога громкости) - отрицательную; изменение громкости на 6дБ соответствует двукратному изменению давления; изменение на 20дБ - изменению давления в 10 раз.
Как же происходит кодирование звука? С самого детства мы сталкиваемся с записями музыки на разных носителях: грампластинках, кассетах, компакт-дисках и т.д. В настоящее время существует два основных способах записи звука: аналоговый и цифровой. Для того чтобы записать звук на какой-нибудь носитель его нужно преобразовать в электрический сигнал.
Это делается с помощью микрофона. Самые простые микрофоны имеют мембрану, которая колеблется под воздействием звуковых волн. К мембране присоединена катушка, перемещающаяся синхронно с мембраной в магнитном поле. В катушке возникает переменный электрический ток. Изменения напряжения тока точно отражают звуковые волны.
В основе кодирования звука лежит процесс преобразования колебаний воздуха в колебания электрического тока и последующая дискретизация аналогового электрического сигнала. Кодирование и воспроизведение звуковой информации осуществляется с помощью специальных программ (редактор звукозаписи). Качество воспроизведения закодированного звука зависит от частоты дискретизации и её разрешения (глубины кодирования звука - количество уровней)
Семпл - это промежуток времени между двумя измерениями амплитуды аналогового сигнала.
Семплом называют также любую последовательность цифровых данных, которые получены путем аналого-цифрового преобразования. Сам процесс преобразования называют семплированием. В русском техническом языке его называют дискретизацией.
Вывод цифрового звука происходит при помощи цифро-аналогового преобразователя (ЦАП), который на основании поступающих цифровых данных в соответствующие моменты времени генерирует электрический сигнал необходимой амплитуды.
Важными параметрами семплирования являются частота и разрядность.
Частота - количество измерений амплитуды аналогового сигнала в секунду.
Если частота семплирования не будет более чем в два раза превышать частоту верхней границы звукового диапазона, то на высоких частотах будут происходить потери (согласно теореме Котельникова, [1]). Этим объясняется то, что стандартная частота для звукового компакт-диска - это частота 44.1 кГц. Так как диапазон колебаний звуковых волн находится в пределах от 20 Гц до 20 кГц, то количество измерений сигнала в секунду должно быть больше, чем количество колебаний за тот же промежуток времени. Если же частота дискредитации значительно ниже частоты звуковой волны, то амплитуда сигнала успевает несколько раз измениться за время между измерениями, а это приводит к тому, что цифровой отпечаток несет хаотичный набор данных. При цифро-аналоговом преобразовании такой семпл не передает основной сигнал, а выдает только шум.
В формате компакт-дисков Audio DVD за одну секунду сигнал измеряется 96 000 раз, т.е. применяют частоту семплирования 96 кГц. Для экономии места на жестком диске в мультимедийных приложениях довольно часто применяют меньшие частоты: 11, 22, 32 кГц. Это приводит к уменьшению слышимого диапазона частот, а, значит, происходит сильное искажение того, что слышно.
Разрядность указывает, с какой точностью происходят изменения амплитуды аналогового сигнала. Точность, с которой при оцифровке передается значение амплитуды сигнала в каждый из моментов времени, определяет качество сигнала после цифро-аналогового преобразования. Именно от разрядности зависит достоверность восстановления формы волны.
Для кодирования значения амплитуды используют принцип двоичного кодирования. Звуковой сигнал должен быть представлен в виде последовательности электрических импульсов (двоичных нулей и единиц). Обычно используют 8, 16-битное или 20-битное представление значений амплитуды. От частоты дискредитации (количества измерений уровня сигнала в единицу времени) зависит качество кодирования. С увеличением частоты дискредитации увеличивается точность двоичного представления информации. При частоте 8 кГц (количество измерений в секунду 8000) качество семплированного звукового сигнала соответствует качеству радиотрансляции, а при частоте 48 кГц (количество измерений в секунду 48000) - качеству звучания аудио-CD.
Если использовать 8-битное кодирование, то можно достичь точности изменения амплитуды аналогового сигнала до 1/256 от динамического диапазона цифрового устройства (28 = 256).
Если использовать 16-битное кодирование для представления значений амплитуды звукового сигнала, то точность измерения возрастет в 256 раз.
В современных преобразователях принято использовать 20-битное кодирование сигнала, что позволяет получать высококачественную оцифровку звука.
Формат Audio DVD использует разрядность 24 бита и частоту семплирования 96 кГц.
Рассмотрим такой пример: подсчитать, сколько места будет занимать одна минута цифрового звука разрядностью 16 бит на жестком диске или любом другом цифровом носителе, записанного с частотой
а) 44.1 кГц;
б) 11 кГц;
в) 22 кГц;
г) 32 кГц
Решение.
а) Если записывают моносигнал с частотой 44.1 кГц разрядностью 16 бит (2 байта), то каждую минуту аналого-цифровой преобразователь будет выдавать 44100 * 2 * 60 = 5292000 байт (более 5 Мб) данных об амплитуде аналогового сигнала, который в компьютере записываются на жесткий диск.
Если записывают стереосигнал, то 10584000 байт (более 10 Мб).
б) для частот 11, 22, 32 кГц расчеты производятся аналогично.
Еще один пример: какой объем данных имеет моноаудиофайл, длительность звучания которого 1 секунда, при среднем качестве звука (16 бит, 24 кГц)?
Решение.
16 бит * 24000 = 384 000 бит = 48 000 байт = 46.875 Кб.
4.4 Контрольные вопросы и задания
8000 бит;
7000 бит;
5000 бит;
1000 бит.
0,255,0;
255,255,255;
0,0,0;
0,0,255;
255,0,0.
8 цветов;
256 цветов;
16777216 цветов.