возможных вариантов умножения двоичных чисел в форме с плавающей запятой.
Для запоминания двоичных цифр служит двоичный элемент, имеющий два четко различимых состояния. Этот элемент триггер. Совокупность из n таких двоичных элементов, позволяющая зафиксировать n-разрядное двоичное число, называется регистром (Р). Множимое и множитель хранятся в регистрах.
Умножение осуществляется в 4 этапа:
1)определение знака произведения,
2)определение порядка произведения,
3)перемножение мантисс сомножителей,
4)нормализация результата, если необходимо.
Пример. |
Умножить x*y. |
x = 0, 10 101·2110 |
, |
y=-0,10 |
111·2-011. |
||||
Умножение |
мантисс |
ведется |
в прямом |
коде. |
Множимое: |
мантисса |
|||
[ x] пр = 0, 10 101, его показатель [ x1] обр =0,0 110, множитель: |
мантисса |
||||||||
[y]пр = 1,10 111, его показатель [y1]обр =1,1 100. |
|
|
|
|
|||||
1. Для определения знака |
произведения |
используется логическая |
|||||||
функция сумма по модулю 2, которая обозначается |
О, |
нулем кодируется |
|||||||
знак положительного числа, единицей – знак отрицательного числа. |
|||||||||
|
|
0 О 0 = 0 |
0 О 1 = 1 |
|
|
|
|||
|
|
1 О 0 = 1 |
1 О 1 = 0 |
|
|
|
|||
Знак произведения 0 О 1=1, т.е. отрицательный. |
|
|
|
||||||
2. Порядок произведения определяется |
в |
|
результате |
сложения |
|||||
(вычитания) показателей степени в обратных кодах. |
|
|
|
||||||
|
[x1]обр + [y1обр] = 0,0 110 + 1,1100=0,0011. |
|
|||||||
3. Определение |
мантиссы |
произведения |
(табл. 2). Для |
записи |
|||||
множимого и множителя используется разрядная сетка по шесть разрядов: один разряд используется для записи знака, пять – для записи значащих цифр. Для хранения мантиссы произведения потребуется 11 разрядов: 1 знаковый разряд, остальные 10 для хранения значащих цифр мантиссы.
16
|
|
|
Таблица 2 |
|
Определение мантиссы произведения |
||||
|
|
|
|
|
x (P1) |
y (P2) |
→ ∑ |
Пояснения |
|
неподвижен |
→ |
(сумматор) |
|
|
0,10101 |
0,10111 |
0,00000 00000 |
1 такт |
|
|
|
+ 0,10101 |
Анализ R2, если |
|
|
0,01011 |
0,10101 00000 |
младший разряд 1, то x |
|
|
|
заносится в ∑, |
|
|
|
|
0,01010 10000 |
далее сдвиг y и ∑ |
|
|
|
|
|
|
0,10101 |
0,01011 |
0,01010 10000 |
2 такт |
|
|
|
+ 0,10101 |
Анализ R2, если |
|
|
0,00101 |
0,11111 10000 |
младший разряд 1, то x |
|
|
|
заносится в ∑, |
|
|
|
|
0,01111 11000 |
далее сдвиг y и ∑ |
|
0,10101 |
0,00101 |
0,01111 11000 |
3 такт |
|
|
|
+ 0,10101 |
Анализ R2, если |
|
|
0,00010 |
1,00100 11000 |
младший разряд 1, то x |
|
|
|
заносится в ∑, |
|
|
|
|
0,10010 01100 |
далее сдвиг y и ∑ |
|
0,10101 |
0,00010 |
0,10010 01100 |
4 такт |
|
|
|
Анализ R2, если |
|
|
|
|
|
младший разряд 0, то x |
|
|
|
|
не заносится в ∑, |
|
|
0,00001 |
0,01001 00110 |
далее сдвиг y и ∑ |
|
|
|
|
|
|
|
|
|
|
|
0,10101 |
0,00001 |
0,01001 00110 |
5такт |
|
|
|
+ 0,10101 |
Анализ R2, если |
|
|
|
0,11110 00110 |
младший разряд 1, то x |
|
|
0,00000 |
|
заносится в ∑, |
|
|
|
0,01111 00011 |
далее сдвиг y и ∑ |
|
|
|
|
|
|
Ответ: 0,01111 00011.
В рассмотренном примере реализован метод умножения, начиная с младших разрядов, со сдвигом содержимого множителя и сумматора. Для его реализации требуется 2n-разрядный регистр сумматора, два n- разрядных регистра для размещения множимого и множителя.
4.Нормализуем полученный результат: 0,11110 00110*20010.
2.9.Деление двоичных чисел, представленных в форме
сплавающей запятой, с восстановлением остатка
При реализации операции деления в форме с плавающей запятой необходимо выполнить следующие действия:
17
1)определить знак частного,
2)определить показатель степени частного,
3)найти частное,
4)нормализовать полученный результат.
Для определения знака частного, как и в операции умножения, используется функция сумма по модулю 2. Показатель у частного определяется в соответствии с правилами сложения чисел в форме с фиксированной запятой (см. п. 2.5).
Операция деления, как и в десятичной арифметике, является обратной операции умножения и сводится к последовательности операций сдвига и вычитания. Мантиссы должны быть представлены в дополнительном или обратном коде, и над ними выполняются следующие действия (табл. 3).
|
|
|
|
|
|
Таблица 3 |
|||
|
|
|
|
|
|
|
|
|
|
Знаки делимого |
+ |
|
|
+ |
_ |
_ |
|
|
|
А |
|
|
|
|
|
|
|
|
|
Знак делителя |
+ |
|
|
_ |
+ |
_ |
|
|
|
В |
|
|
|
|
|
|
|
|
|
Что делать |
А+ |
|
|
А+В |
А+В |
А+ |
|
|
|
В |
В |
||||||||
|
|
|
|
|
|
|
|
|
|
В табл. 3 символ В указывает на изменение знака операнда на противоположный.
Рассмотрим на примере получение мантиссы частного. А = - 0,100111 (мантисса делимого).
В = - 0,110001 Ошибка! Ошибка связи.
Запишем машинные изображения мантисс в обратном модифицированном коде.
А обрмод 11,011000
В мод |
11,001110 |
|
|
мод |
00,110001 |
В |
|||||
обр |
|
|
|
обр |
|
При делении мантисс результат будет получен в прямом коде. Найдем мантиссу частного (табл. 4), через Сi обозначим цифру,
которая записывается в частное.
|
|
|
Определение мантиссы частного |
|
|
Таблица 4 |
|||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
←∑ |
|
←Регистр частного |
Примечание |
|||||
11,011 000 |
|
|
000 000 |
←Сдвиг |
|
||||
10,110 001 |
|
|
000 00 __ |
Заносим в ∑ |
|
||||
|
+ 00,110 001 |
|
|
000 001 |
|
|
обрмод |
|
|
|
|
В |
|||||||
11,100 010 |
|||||||||
|
|
|
C1=1, так как знаки |
|
|||||
|
|
|
|
|
|
||||
|
|
|
|
|
делимого |
|
|||
|
|
|
|
|
и остатка совпадают |
|
|||
18
|
|
|
|
|
|
|
|
|
|
|
|
Продолжение табл. 4 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
←∑ |
|
←Регистр частного |
Примечание |
|||||||||
11,000 101 |
|
|
|
00001__ |
←Сдвиг |
|||||||||||||
+00,110 001 |
|
|
|
000011 |
Заносим в ∑ |
|
|
|
|
мод . |
||||||||
В |
||||||||||||||||||
11,110 110 |
|
|
|
|
|
|
|
|
|
|
обр |
|||||||
|
|
|
|
С2=1, так как знаки |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
делимого |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
и остатка совпадают. |
||||||
11,101 101 |
|
|
|
00011__ |
← Сдвиг |
|||||||||||||
+ |
|
|
00,110 001 |
|
|
|
000110 |
Заносим в ∑ |
|
|
мод |
|||||||
В |
||||||||||||||||||
|
|
|
|
100,011 110 |
|
|
|
|
|
|
|
|
|
|
обр |
|||
|
|
|
|
|
|
С3=0, так как знаки |
||||||||||||
|
|
|
|
|
1 |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
делимого |
|||||||||
00,011 111 |
|
|
|
|
||||||||||||||
|
|
|
|
и остатка разные |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||
00,011 111 |
|
|
|
|
Восстановление остатка |
|||||||||||||
+ 11,001 110 |
|
|
|
00 110__ |
∑=∑+ |
|
мод |
|||||||||||
В |
||||||||||||||||||
11,101 101 |
|
|
|
|
|
|
|
|
|
обр |
||||||||
11,011 011 |
|
|
|
|
← Сдвиг |
|||||||||||||
|
+00,110 001 |
|
|
|
00110_ |
Заносим в ∑ |
|
мод |
||||||||||
|
|
|
В |
|||||||||||||||
|
|
|
|
|
|
|
||||||||||||
|
|
|
100,001 100 |
|
|
|
|
|
|
|
|
|
|
|
обр |
|||
|
|
|
|
|
|
С4=0,так как знаки |
||||||||||||
|
|
|
|
|
1 |
|
|
|
|
001100 |
||||||||
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
делимого и остатка |
|||||||||
|
|
|
|
|
0,001 101 |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
не совпадают |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
00,001101 |
|
|
|
|
← |
||||||||
+11,001110 |
|
|
|
|
001100__ |
Восстановление остатка |
||||||||||||
|
|
|
|
|
11,011011 |
|
|
|
|
|
|
|
|
|
|
|
||
10,110 111 |
|
|
|
|
← Сдвиг |
|||||||||||||
|
+00,110 001 |
|
|
|
01100_ |
Заносим в ∑ |
|
мод |
||||||||||
|
|
|
В |
|||||||||||||||
|
|
|
|
|
|
|
||||||||||||
11,101 000 |
|
|
|
011001 |
|
|
|
|
|
|
обр |
|||||||
|
|
|
С5=1,так как знаки |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
делимого |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
и остатка совпадают |
||||||
|
|
|
|
|
11,010 001 |
|
|
← Сдвиг |
||||||||||
|
+00,110 001 |
|
|
11001_ |
Заносим в ∑ |
|
мод |
|||||||||||
|
|
В |
||||||||||||||||
|
|
|
|
|
|
|||||||||||||
100,000 010 |
|
|
|
|
|
|
|
|
|
обр |
||||||||
|
|
|
С6=0, так как знаки |
|||||||||||||||
+ |
|
1 |
|
|
110010 |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
делимого |
||||||
|
|
|
|
|
0,000 011 |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
и остатка разные |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
00,000011 |
|
|
|
|
← Сдвиг |
||||||||
|
+11,001110 |
|
|
|
|
0,110010 |
Восстановление остатка |
|||||||||||
|
|
|
|
|
11,010001 |
|
|
|
|
|
|
|
|
|
|
|
||
Ответ: 0,110010.
Операция деления относится к числу неточных, результат получается с некоторой погрешностью. Признаком окончания операции может быть достижение заданной точности (количество разрядов в частном) либо получение остатка, равного 0. Как правило, контроль ведется за количеством сдвигов, равным количеству разрядов в частном.
19
Контрольные вопросы
1.Напишите изображения чисел А=-0,1001 001, В=0,1010 011 в прямом, обратном, дополнительном кодах.
2.Напишите изображения чисел А=-0,1001 001, В=0,1010011 в модифицированном обратном и дополнительном кодах.
3.Назовите особенности операции сложения в обратном и дополнительном кодах.
4.Назовите признаки переполнения разрядной сетки при выполнении операции сложения (вычитания).
5.Сформулируйте алгоритм выполнения операции сложения в цифровых вычислительных машинах с плавающей запятой.
6.Как определяется знак произведения в цифровых вычислительных машинах с плавающей запятой?
7.Как определяется порядок в цифровых вычислительных машинах с плавающей запятой?
8.В каком коде получается результат при выполнении операции деления?
3.ДВОИЧНОЕ КОДИРОВАНИЕ ТЕКСТОВОЙ ИНФОРМАЦИИ
Начиная с конца 60-х годов, компьютеры стали использоваться не только для выполнения сложных математических расчетов, но и для обработки текстовой информации. В настоящее время большая часть персональных компьютеров в мире (и наибольшее время) занята обработкой именно текстовой информации.
При вводе в память компьютера текстовой информации происходит ее двоичное кодирование, символ преобразуется в его двоичный код. Пользователь нажимает на клавиатуре клавишу с символом, и в память компьютера поступает последовательность из электрических импульсов (двоичный код символа). Код символа хранится в оперативной памяти компьютера.
В процессе вывода символа на экран компьютера производится обратный процесс – декодирование, т.е. преобразование кода символа в его изображение.
Традиционно, для того чтобы закодировать один символ, используется количество информации, равное 1 байту, т. е. I = 1 байту = 8 битам. При помощи формулы, которая связывает между собой количество возможных событий К и количество информации I, можно вычислить, сколько
20