Материал: 370

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Примеры:

 

 

 

 

 

 

а)

х = 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

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

00,0 а1

а2

… аn-1

01, а1

а2

… аn

1а1, а2…

аn 0

00,1 а1

а2

… аn-1

10, а1

а2

… аn

0а1, а2…

аn

11,0 а1

а2

… аn-1

11, а1

а2

… аn

1а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

Источник: https://studfile.net/preview/16406427/