Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia1 (1).doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
7 Мб
Скачать
☆

Находим характеристику частного путем сложения с дополне­нием .

0*

1

0

1

0

0

+

1*

0

1

0

0

1

1*

1

1

1

0

1.

Характеристика частного получена в дополнительном коде и

, При переходе к прямому коду, получим Теперь находим част­ное деления мантисс, используя схему деления без восстановления остатка. Коды ман­тиссы делителя

Разряды частного

Делимое

0*.10101

Делитель Bдоп.

+

1*.00111

Остаток R1<0

=

1*.11100

0.

Сдвиг R1

←

1*.11000

Делитель Bпр.

+

0*.11001

Остаток R2>0

=

10*.10001

1

Сдвиг R2

←

1*.00010

Делитель Bдоп.

+

1*.00111

Остаток R3>0

=

10*.01001

1

Сдвиг R3

←

0*.10010

Делитель Bдоп.

+

1*.00111

Остаток R4<0

=

1*.10001

0

Сдвиг R4

←

1*.00010

Делитель Bпр

+

0*.11001

Остаток R5<0

=

1*.11011

0

Сдвиг R5

←

1*.10110

Делитель Bпр.

+

0*.11001

Остаток R6>0

=

10*.01111

1

Сдвиг R6

←

0*.11110

Делитель Bдоп.

+

1*.00111

Остаток R7>0, доп. разряд

=

10*.00101

1

Знак частного 0 0=0

Окончательный результат

0*.110011

Таким образом, окончательный результат равен . Так же, как и впредудущих случаях проверим результат:

.

С другой стороны:

, ,

Арифметические операции над десятичными числами

При организации выполнения арифметических операций десятичные числа обычно представляются как целые, то есть с запятой, фиксированной справа. Для кода знака десятичного числа может отводиться один или несколько разрядов. В первом случае это может быть крайняя левая позиция (нулевая) в разрядной сетке. В осталь­ных позициях правее располагаются двоично-десятичные тетрады, самая правая из ко­торых соответствует младшему разряду целого десятичного числа. В компьютерах с десятичной арифметикой может применяться кодирование знаков 4-разрядными дво­ичными кодами). При таком кодировании знаков тетрады двоично-десятичного числа, начиная с младшей, размещаются влево от знака. В запоминающих устройствах двоич­ные тетрады обычно хранятся в естественном прямом коде. Для операций сложения и вычитания они выравниваются по правой границе, определяемой запятой. Арифмети­ческие операции начинаются с анализа знаков. Если знаки одинаковые, то по команде СЛОЖИТЬ числа складываются в прямом коде. Если знаки разные, то отрицательное, число представляется в виде дополнения до , где — количество десятичных разря­дов в наиболее длинном из участвующих в операции операнде. В результате вы­читание заменяется сложением положительного числа с дополнением отрицательного. При выполнении команды ВЫЧЕСТЬ знак второго операнда предварительно изменя­ется на обратный, после чего действия над десятичными операндами в АЛУ произво­дятся так же, как и при сложении. В процессе выполнения арифметических действий над двоично-десятичными числами они преобразуются в какой-либо другой код, обес­печивающий возможность применения достаточно несложных устройств для выполне­ния операций. Если при сложении десятичных цифр получается результат больший де­сяти, то необходимо единицу переноса передать в следующий десятичный разряд. Наиболее просто это можно сделать, представив либо цифры обоих слагаемых в так называемом коде с избытком три, либо цифры одного из слагаемых в коде с избытком шесть.

Если при сложении нет переносов из каких-либо тетрад, то они корректируются путем вычитания из них 6 (прибавления 1010 , то есть дополнения 6 до 16). Если воз­ник перенос из старшей тетрады, то корректируется младшая и наоборот. При переносе из обеих тетрад корректировка не производится. Кроме того, наличие переноса из старшей тетрады при сложении числа и дополнения числа свидетельствует о том, что результат получился в прямом коде, а его отсутствие — в дополнительном. Таким образом, при сложении чисел с разными знаками указанным выше образом, знак ре­зультата определяется по наличию или отсутствию переноса из старшей тетрады. Если перенос есть, то результат положительный в прямом коде. Если нет переноса, то полу­чается отрицательный результат в виде дополнения. Когда при сложении чисел с оди­наковыми знаками возникает перенос из старшей тетрады, то это свидетельствует о десятичном переполнении. Ниже рассмотрим примеры выполнения операций сложе­ния и вычитания двоично-десятичных чисел. Найдем суцмму чисел 87 и 12. Предста­вим их в двочно-десятичном коде: . Представим первое число в коде с избытком 6:

1

0

0

0

0

1

1

1

+

0

1

1

0

0

1

1

0

1

1

1

0

1

1

0

1.

Теперь найдем сумму

1

1

1

0

1

1

0

1

+

0

0

0

1

0

0

1

0

1

1

1

1

1

1

1

1.

Переноса из какой-либо тетрад нет, следовательно нужно скорректировать обе тетрады

1

1

1

1

1

1

1

1

+

1

0

1

0

1

0

1

0

1

1

0

0

1

1

1

0

0

1.

Окончательный результат . Рассмотрим разность . Дополнение до 100 равно 88 (1000 1000). Представим его в коде с избытком 6:

1

0

0

0

1

0

0

0

+

0

1

1

0

0

1

1

0

1

1

1

0

1

1

1

0.

Сложим полученную сумму с первым слагаемым

1

1

1

0

1

1

1

0

+

1

0

0

0

0

1

1

1

1

0

1

1

1

1

0

1

0

1.

В этом случае корректировка тетрад не требуется и полученный результат равен . Следует заметить, что при реализации операции вычитания, рассмотренной выше дополнительный код . Такое дополнение и получается с из представления дополнения до 100 потетрадным избытком 6. В связи с этим может сложиться впечатление, что представление чисел в коде с избытком излишне. Однако это не так. Дело в том, что реализация алгоритмов сложения и вычитания должна иметь минимальные отличия, а это и достигается путем подобной кодировки двоично-десятичных чисел.

Рассмотрим обратную разность, то есть . Дополнение до 100 равно 13 (0001 0011). Вычислим его код с избытком 6:

0

0

0

1

0

0

1

1

+

0

1

1

0

0

1

1

0

0

1

1

1

1

0

0

1.

Просуммируем результат с числом :

0

1

1

1

1

0

0

1

+

0

0

0

1

0

0

1

0

1

0

0

0

1

0

1

1.

Так как переносы отсутствуют, корректируем обе тетрады

1

0

0

0

1

0

1

1

+

1

0

1

0

1

0

1

0

1

0

0

1

0

1

0

1

0

1.

Так как результат получен в дополнительном коде (отрицательный) переводим его в прямой код: 1101 1010+1=1101 1011. Проведем последнюю корректировку (корректируем обе тетрады ввиду отсутствия переносов):

1

1

0

1

1

0

1

1

+

1

0

1

0

1

0

1

0

1

0

1

1

1

1

0

1

0

1.

Окончательный результат равен .

Теперь рассмотрим пример реализации сложения с использованием кода с из­бытком 3. Найдем сумму чисел 29 и 19. В двоично-десятичной системе запись чисел имеет вид: 0010 1001 и 0001 1001. Запишем оба числа в коде с избытком 3:

0

0

1

0

1

0

0

1

+

0

0

1

1

0

0

1

1

0

1

0

1

1

1

0

0

и

0

0

0

1

1

0

0

1

+

0

0

1

1

0

0

1

1

0

1

0

0

1

1

0

0.

Сложим полученные результаты

0

1

0

1

1

1

0

0

+

0

1

0

0

1

1

0

0

1

0

1

0

1

1

0

0

0.

Скорректируем старшую тетраду

1

0

1

0

1

0

0

0

+

1

0

1

0

0

0

0

0

1

0

1

0

0

1

0

0

0.

Полученный результат равен 48. Теперь найдем разность этих же чисел. Допол­нение 29 до 100 равно 71, или в двоично-десятичной системе — 0111 0001. В коде с избытком 3 получим

0

1

1

1

0

0

0

1

+

0

0

1

1

0

0

1

1

1

0

1

0

0

1

0

0.

Сложим полученный результат со вторым числом

1

0

1

0

0

1

0

0

+

0

1

0

0

1

1

0

0

1

1

1

1

1

0

0

0

0.

Перенос есть из младшей тетрады, поэтому корректируем старшую.

1

1

1

1

0

0

0

0

+

1

0

1

0

0

0

0

0

1

1

0

0

1

0

0

0

0.

Результат отрицательный, получен в дополнительном коде. Переведем его в прямой код: 0110 1111+1=0111 0000. Скорректируем старшую тетраду, так как имел место перенос из младшей:

0

1

1

1

0

0

0

0

+

1

0

1

0

0

0

0

0

1

0

0

0

1

0

0

0

0.

Окончательный результат равен –10. Из рассмотренных примеров видно, что использование кода с избытком 3 отличается лишь дополнительной операции сложе­ния.

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

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

Множитель

3

5

Содержимое сумматора

0

0

0

0

+

1

9

5-1=4

=

0

1

9

0

+

1

9

4-1=3

=

0

3

8

0

+

1

9

3-1=2

=

0

5

7

0

+

1

9

0

2-1=1

=

0

7

6

0

+

1

9

1-1=0

=

0

9

5

0

Сдвиг  вправо

0

0

9

5

+

1

9

3-1=2

=

0

2

8

5

+

1

9

2-1=1

=

0

4

7

5

+

1

9

1-1=0

Произведение

=

0

6

6

5

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

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

Частное

Делимое

0

6

3

-

9

Остаток R1<0

-

-9

7

0

Восстановление R1

+

9

1

0

6

3

Сдвиг делителя

9

-

Остаток R2>0

0

5

4

1

-

9

Остаток R3>0

0

4

5

2

-

9

Остаток R4>0

0

3

6

3

-

9

Остаток R5>0

0

2

7

4

-

9

Остаток R6>0

0

1

8

5

-

9

Остаток R7>0

0

9

6

-

9

7

Частное

0

0

0

7

Можно также производить деление, не восстанавливая остаток. Для этого дос­таточно сдвинуть делитель на разряд вправо и продолжать деление, теперь прибавляя делитель к отрицательному остатку с приписанным справа следующим разрядом дели­мого. После первого прибавления в очередном разряде частного устанавливается цифра 9. На каждом этапе сложения содержимое этого разряда уменьшается на еди­ницу. При новом появлении положительного остатка в разряде зафиксируется искомая цифра разряда частного. Далее осуществляется переход к определению следующей цифры частного. Рассмотрим данную схему на примере деления 84 на 12.

Частное

Делимое

0

0

8

4

-

1

2

Остаток R1<0

-9

-8

6

4

0

0

Сдвиг делителя

+

1

2

-9

-8

7

6

0

9

+

1

2

-9

8

8

0

8

+

1

2

Частное

1

0

0

0

0

7

Если делимое не делится нацело, то для целей округления может определяться дополнительная цифра частного.

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