Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
дз1.doc
Скачиваний:
9
Добавлен:
06.11.2018
Размер:
89.6 Кб
Скачать

Задание 2 Вычитание чисел с фиксированной запятой

Вычитание целых знаковых и беззнаковых чисел в байтном формате.

Выполняются те же пункты, что и в задании 2, касательно вычитания, но в пунктах 2 и 3 переполнение имеет место при разных знаках операндов.

Пример выполнения задания

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

В каждом разряде вычитание реализуется в соответствии со следующей таблицей:

ai – значение разряда уменьшаемого,

bi – значение разряда вычитаемого,

zi-1 – был ли заем из i-го разряда в i-1 предыдущий разряд,

r i – разность i-го разряда,

zi – заем из предыдущего i+1 разряда в i-й разряд.

1. А = 67, В = 51

ai

bi

zi-1

ri

zi

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

1

0

1

0

0

1

0

1

1

1

0

0

0

1

А = (67)10 = (1000011)2

В = (51)10 = (110011)2

1) А > 0, B > 0

ЗИ БзИ

АПК= _ 0.1 0 0 0 0 1 1 _+67 _ 67

ВПК= 0.0 1 1 0 0 1 1 +51 51

СПК= 0.0 0 1 0 0 0 0 +16 16

CF = 0; SF = 0; ZF = 0; AF = 0; PF = 0; OF = 0.

2) А < 0, В > 0

ЗИ БзИ

АДК= _ 1.0 1 1 1 1 0 1 _- 67 _189

ВПК= 0.0 1 1 0 0 1 1 +51 51

СДК= 1.0 0 0 1 0 1 0 138

СПК= 1.1 1 1 0 1 1 0 - 118

CF = 0; SF = 1; ZF = 0; AF = 0; PF = 0; OF = 0.

3) А > 0, B < 0

ЗИ БзИ

АПК= _ 0. 1 0 0 0 0 1 1 _+67 _ 67

ВДК= 1. 1 0 0 1 1 0 1 - 51 205

СПК= 0. 1 1 1 0 1 1 0 +118 118 ?

CF = 1; SF = 0; ZF = 0; AF = 1; PF = 0; OF = 0.

Для БзИ результат неверен вследствие возникающего заема из разряда за пределами формата.

4) А < 0, B < 0

ЗИ БзИ

АДК= _ 1.0 1 1 1 1 0 1 _ - 67 _ 189

ВДК= 1.1 0 0 1 1 0 1 - 51 205

СДК= 1.1 1 1 0 0 0 0 240 ?

СПК= 1.0 0 1 0 0 0 0 -16

CF = 1; SF = 1; ZF = 0; AF = 0; PF = 1; OF = 0.

Для БзИ результат неверен вследствие возникающего заема из разряда за пределами формата.

2. Правило для подбора выглядит следующим образом:

А + В > 128, значит 128 – А < В < 127

А = 67 (неизменно), В = 64 (подбираем)

1) А < 0, В > 0

ЗИ БзИ

АДК= _ 1.0 1 1 1 1 0 1 _ - 67 _ 189

ВПК= 0.1 0 0 0 0 0 0 +64 64

СПК= 0.1 1 1 1 1 0 1 -125? 125

CF = 0; SF = 0; ZF = 0; AF = 0; PF = 1; OF = 1.

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

  • при разных знаках операндов знак результата отличается от знака первого операнда;

  • несовпадение заемов в два старшие разряда (один из них присутствует, а другой нет).

2) А > 0, В < 0

ЗИ БзИ

АПК= _ 0.1 0 0 0 0 1 1 _ +67 _ 67

ВДК= 1.1 0 0 0 0 0 0 - 64 192

СДК= 1.0 0 0 0 0 1 1 131 ?

СПК= 1.1 1 1 1 1 0 1 -125?

CF = 1; SF = 1; ZF = 0; AF = 0; PF = 0; OF = 1.

Для ЗИ результат некорректен вследствие возникающего переполнения, для БзИ результат некорректен из-за возникающего переноса из старшего разряда.

3. Значение числа В фиксируем = 51), а значение А подбираем согласно формуле А + В = 128, благодаря которой при сложении положительных чисел будет фиксироваться переполнение, а при сложении отрицательных этого не будет. Тогда А = 77.

1) А > 0, B < 0

ЗИ БзИ

АПК =_ 0.1 0 0 1 1 0 1 _+77 _ 77

ВДК = 1.1 0 0 1 1 0 1 - 51 205

СДК = 1.0 0 0 0 0 0 0 128?

СПК = 1.0 0 0 0 0 0 0 - 128?

CF = 1; SF = 1; ZF = 0; AF = 0; PF = 0; OF = 1.

Результат БзИ некорректен вследствие возникающего заема из разряда за пределами формата, для ЗИ результат некорректен из-за переполнения.

2) А < 0, B > 0

ЗИ БзИ

АДК _ 1.0 1 1 0 0 1 1 _ -77 _ 179

ВПК 0.0 1 1 0 0 1 1 +51 51

СДК 1.0 0 0 0 0 0 0 128

СПК 1.0 0 0 0 0 0 0 - 128

CF = 0; SF = 1; ZF = 0; AF = 0; PF = 0; OF = 0.

Результаты ЗИ и БзИ корректны.