Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

370

.pdf
Скачиваний:
1
Добавлен:
07.01.2021
Размер:
453.7 Кб
Скачать

Примеры:

 

 

 

 

 

 

а)

х = 0,110 001

[x]мобр = 00,110

001

 

 

 

y = 0,001 001

[y]мобр

= 00,001

001

 

 

 

x+y = 0,111 010

[х+y]мобр= 00,111 010

Складываются машинные изображения чисел. Ответ: 0,111

010.

б)

х =- 0,110 001

[x]мобр = 00,110 001

 

y =

0,001 001

 

[y]мобр = 11,110

110

 

 

 

x+y = 0,101 000

100,100 111

 

 

 

 

 

+

1

 

[x+ y]мобр =00,101 000

Единица переноса знакового разряда прибавляется к младшему разряду (циклический перенос)− особенность работы в обратном коде.

Складываются машинные изображения чисел. Ответ: 0,101 000.

в)

х = -0,110 001

[x]мобр = 11,001 110

 

y =

0,001 001

[y]мобр

= 00,001 001

 

 

x+y =

-0,101 000

[x +y]мобр = 11,010 111

 

Складываются машинные изображения чисел. Ответ: -0,101 000.

г)

х =-0,110 001

[x]мобр= 11,110 110

 

y =-0,001 001

[y]мобр = 11,001

110

 

 

x+y = -0,111 010

111,000

100

 

 

 

 

 

+

1

 

 

[x +y]мобр= 11,000 101

Единица переноса, как и в примере б), прибавляется к младшему разряду.

Складываются машинные изображения чисел. Ответ: -0,111 010. Особенность сложения в обратных кодах: единица переноса

знакового разряда прибавляется к младшему разряду сетки (циклический перенос).

11

2.5. Операция сложения (вычитания) в форме с фиксированной запятой в дополнительном коде

При выполнении операции умножения в машинах с плавающей запятой их порядки складываются (вычитаются). Порядки записываются в разрядной сетке в виде целых чисел. В рассматриваемых примерах сетка имеет 8 разрядов, 1 разряд знаковый.

В разрядную сетку записываются целые числа, запись начинается с заполнения младших разрядов, незанятые разряды заполняются нулями. Примеры:

а)

А = 101

А > 0

[A]доп = 0,000 0101

 

В = 111

 

В > 0

[B]доп =0,0000 111

 

А+В=1100

 

[A+B]доп = 0,0001 100

Складываются машинные изображения чисел. Ответ: 1100

б) А = 101

А > 0

[А]доп = 0,0000 101

 

В = -111

 

В < 0

[B]доп = 1,1111

001

 

А+В =-010

 

[A+B]доп = 1,1111

110

 

 

 

 

-

 

1

 

1,1111 101 инвертируем

-0,0000 010

При переводе результата в обычную двоичную запись из младшего разряда вычитается единица, полученное число инвертируется. Ответ: -10.

в) А = -101

А < 0,

[А]доп = 1,1111 011

 

В = -111

 

В < 0

[B]доп = 1,1111 001

 

А+В =-1100,

 

[A+B]доп =11,1110 100

 

 

 

 

отбрасывается 1

 

 

 

 

1,1110 100

 

 

 

 

-

 

1

 

 

 

 

 

 

1,1110 011

 

 

 

 

инвертируем

 

 

 

 

- 0001 100

 

 

Особенность

работы: в дополнительном коде

«лишняя единица»,

12

полученная в знаковом разряде, отбрасывается. Ответ: -1100

г)

А = -101

А < 0

[А]доп

 

= 1,1111 011

 

В =

111

В > 0

[B]доп = 0,0000 111

 

А+В =

010

 

[A+B]доп = 10,0000 010

отбрасывается 1

0,0000 010

Ответ: 10.

2.6. Переполнение разрядной сетки, простой и модифицированный сдвиги, нарушение нормализации числа

В рассматриваемых примерах сетка имеет 8 разрядов, 1 разряд знаковый. Операция сложения выполняется над мантиссами.

Примеры:

а)

А = 1 000 000

А > 0

[А]доп.=0,1000 000

 

В = 1 000 011

В > 0

[B]доп =0,1000 011

 

А+В = 10 000 011

 

[A+B]доп =1,0000 011

При сложении положительных чисел получили отрицательное число, произошло переполнение разрядной сетки. Признак переполнения: знак результата противоположен знакам слагаемых.

б)

А =

-1 000 000

А < 0

[А]доп =1,1000 000

 

В = -1 000 011

В < 0

+ [B]доп

= 1,0111

101

 

 

А+В =-10 000 011

 

[A+B]доп =10,1111

101

 

 

 

 

 

отбрасывается 1.

 

При

сложении

отрицательных

чисел имеем положительное число,

произошло переполнение разрядной сетки. Для получения правильного результата необходим простой сдвиг. Для коррекции результата, полученного в примерах а), б), необходимо выполнить простой сдвиг вправо. Рассмотрим,

как выполняется простой сдвиг влево

и

вправо положительного и

отрицательного чисел.

 

 

Число положительное

 

Число отрицательное

0, а1 а2 … аn

 

1, а1 а2 …аn

Сдвиг влево на один разряд

 

Сдвиг влево на один разряд

13

а1, а2 … аn 0

а1, а2 …аn

Сдвиг вправо на один разряд

Сдвиг вправо на один разряд

0,0 а1 а2 … аn-1

0, 1 а1 а2 … аn-1

зависит от кода: для дополнительного кода =0, для обратного =1.

При сдвиге вправо результата

в примере а) получим [A+B]доп

=0,1000001, при этом показатель степени суммы должен быть увеличен на единицу. Аналогичные преобразования необходимо выполнить с результатом, полученным в примере б).

Запишем числа А и В в модифицированном обратном коде и выполним

операцию сложения.

 

 

 

 

 

 

в) А = 1 000 000

[А]обр=00,1000 000

В = 1 000 011

[B]обр =00,1000 011

 

[А +В]мобр=01,0000 011

г) А = -1 000 000

[А]обр = 11,0111 111

В = -1 000 011

[B]обр

= 11,0111 100

 

 

 

[А +В]мобр=110,1111011

 

 

 

 

+

1

 

 

10,1111100

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

Операция, выполняемая над модифицированными изображениями,

дает следующие результаты.

 

 

 

 

 

Исходная комбинация:

Сдвиг влево

 

Сдвиг вправо

 

 

 

на 1 разряд

 

на 1 разряд

00, а1

а2

… аn

1, а2 а3 а4… аn -1

00,0 а1

а2

… аn-1

01, а1

а2

… аn

1, а2

аn 0

00,1 а1

а2

… аn-1

10, а1

а2

… аn

1, а2

аn

11,0 а1

а2

… аn-1

11, а1

а2

… аn

1, а2

аn

11,1 а1

а2

… аn-1

зависит от кода: для дополнительного кода = 0, для обратного = 1.

При сдвиге вправо результата примера в) получим 00,1000 001, при этом показатель должен быть увеличен на единицу. Подобные преобразования должны быть выполнены в примере г).

Выше было отмечено, что числа с плавающей запятой в вычислительных

машинах должны быть записаны в в нормализованном виде: q-1 ≤ |m | < 1,

14

где q-1 признак нарушения нормализации слева, а 1 – признак нарушения нормализации справа. Когда результат по абсолютной величине оказывается меньше q-1, сдвиг выполняется влево, показатель степени при этом уменьшается на единицу.

2.7. Арифметические операции сложения (вычитания) над двоичными числами с плавающей запятой

В современных вычислительных машинах числа с плавающей запятой хранятся в памяти в прямом коде в нормализованном виде, т.е. представлены мантиссой и порядком.

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

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

2.8.Умножение двоичных чисел, представленных в форме

сплавающей запятой

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

Впроизведении двух чисел количество разрядов в пределе доходит до суммы количеств значащих цифр множимого и множителя. Следовательно, при умножении двух мантисс количество разрядов для хранения произведения должно быть удвоено.

Операция умножения состоит из ряда последовательных операций

сложения частных произведений. Операциями сложения управляют разряды множителя. Если в разряде множителя находится единица, то к сумме частных произведений добавляется множимое, если в разряде множителя нуль, то множимое не прибавляется. При этом возможны различные варианты сдвигов: либо должно сдвигаться множимое, либо сумма частичных произведений. Рассмотрим более подробно один из

15

возможных вариантов умножения двоичных чисел в форме с плавающей запятой.

Для запоминания двоичных цифр служит двоичный элемент, имеющий два четко различимых состояния. Этот элемент триггер. Совокупность из 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]