Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Умножение в дополнительных кодах без коррекции




 

Наряду с традиционным методом умножения в дополнительных кодах, требующим коррекции результата, достаточно широкое применение в ЭВМ находит метод Бута, при котором не требуется выполнять коррекцию. Особенность метода состоит в выполнении сложения или вычитания СЧП и множимого на каждом шаге умножения в зависимости от того, как после сдвига вправо изменяется младший разряд множителя. При его изменении с единицы на ноль производится сложение СЧП с множимым, а при изменении с нуля на единицу – вычитание множимого из СЧП, которое может быть реализовано как сложение с дополнением множимого. Если младший разряд множителя при сдвиге не изменяется, то на данном шаге не производится сложения (вычитания), а выполняется только сдвиг СЧП и множителя вправо.

При реализации этого метода происходит чередование сложений и вычитаний множимого и СЧП, вследствие чего старший разряд СЧП в явном виде представляет его знак. При сдвиге СЧП вправо значение знакового разряда сохраняется (арифметический сдвиг).

 

Необходимо отметить, что:

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

б) При умножении на младшие нули множителя осуществляется сдвиг нулевой СЧП и множителя вправо до появления единицы в младшем разряде множителя, после чего производится вычитание множимого из СЧП.

 

Пример 2. A = 11, B = 15.

 

Представление операндов в разрядной сетке:

 

[+ A ] пр = 0.1011; [– A ] доп = 1.0101;

[+ B ] пр = 0.1111; [– B ] доп = 1.0001.

 

 

 

 

 

 

 

 

а) Оба операнда положительные (A > 0, B > 0):

 

         
  СЧП 0 0 0 0 0 0 1 1 1 1 Обнуление старших разрядов СЧП
  [– A ]доп СЧП 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0   0 1 1 1 1 1│0 1 1 1 Младший разряд множителя равен 1: вычитание множимого из СЧП Сдвиг СЧП и множителя вправо
    1 1 1 0 1   0 1│0 1 1 При сдвиге младший разряд не изменился Сдвиг СЧП и множителя вправо
    1 1 1 1 0   1 0 1│0 1 При сдвиге младший разряд не изменился Сдвиг СЧП и множителя вправо
    1 1 1 1 1   0 1 0 1│0 При сдвиге младший разряд не изменился Сдвиг СЧП и множителя вправо
  [ A ]пр СЧП   0 1 0 1 1 0 1 0 1 0   0 0 1 0 1   0 1 0 1│0   0 0 1 0 1 При сдвиге младший разряд множителя изменился с 1 на 0: сложение СЧП с множимым Сдвиг СЧП и множителя вправо

Полученный результат представлен в прямом коде и равен:

[ C ] пр = 20 + 22 + 25 + 27 = 1 + 4 + 32 + 128 = 165.

 

б) Оба операнда отрицательные (A < 0, B < 0):

         
  СЧП 0 0 0 0 0 1 0 0 0 1 Обнуление старших разрядов СЧП
  [– A ]пр СЧП 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1   1 0 0 0 1 1│1 0 0 0 Вычитание множимого из СЧП   Сдвиг СЧП и множителя вправо
  [ A ]доп СЧП 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1   1│1 0 0 0 0 1│1 0 0 Сложение СЧП с множимым   Сдвиг СЧП и множителя вправо
  1 1 1 1 0 1 0 1│1 0 Сдвиг СЧП и множителя вправо
  1 1 1 1 1 0 1 0 1│1 Сдвиг СЧП и множителя вправо
  [– A ]пр СЧП 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1   0 1 0 1│1 0 0 1 0 1 Сложение СЧП с множимым   Сдвиг СЧП и множителя вправо

 

 

П

 

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

[ C ] пр = [ A ] доп × [ B ] доп = (0.010100101)2 = (165)10

 

 


Задание 5 Деление целых чисел

 

1. Выполнить операцию деления заданных целых чисел A и B со всеми комбинациями знаков, используя метод деления в дополнительных кодах. Для представления делимого (A) использовать 16 двоичных разрядов (один –знаковый и 15 – цифровых), для представления делителя (B) – 8 разрядов (один – знаковый и 7 – цифровых). Остаток от деления и частное представляются в той же разрядной сетке, что и делитель.

2. Результаты операции представить в десятичной системе счисления и проверить их правильность.

Варианты задания приведены в табл.5 приложения 1.

 

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

Использование метода деления в дополнительных кодах предполагает, что положительные операнды участвуют в операции в прямом, а отрицательные – в дополнительном коде. Результат операции (остаток и частное) получается в коде, зависящем от знака. Знак частного определяется знаками делимого и делителя и формируется в ходе выполнения операции по тем же правилам, что и цифровые разряды. Знак остатка должен совпадать со знаком делимого. Нулевые частное и остаток содержат в знаковом разряде ноль («положительный» ноль) независимо от знаков операндов.

 

Формирование частного. Операция деления при ее реализации в ЭВМ представляет собой многошаговый процесс, на каждом шаге которого формируется один разряд частного (знаковый или цифровой). Значение разряда частного зависит от знаков делителя и остатка, полученного на данном шаге. При их совпадении формируемый разряд частного равен единице, при несовпадении – нулю.

Разряды частного заносятся на место освобождающихся при сдвиге влево младших разрядов делимого (остатка). Частное формируется, начиная от старших разрядов. На первом шаге деления вырабатывается его знаковый разряд, а на последующих – цифровые разряды.

 

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

 

Следует помнить, что:

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

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

 

Коррекция результата. Результат операции деления (остаток и частное) может потребовать коррекции. Коррекция остатка производится в случае несовпадения знака окончательного остатка, полученного после формирования всех разрядов частного, со знаком делимого и состоит в сложении остатка с делителем или в вычитании делителя из него. Действие, выполняемое при коррекции остатка, определяется так же, как и в основном цикле деления, связанном с формированием разрядов частного, т.е. зависит от совпадения или несовпадения знаков делителя и остатка. Исключением из этого правила является нулевой остаток, который независимо от знака делимого не подлежит коррекции.

Кроме общего правила коррекции остатка, существует особый случай, который имеет место при получении нулевого промежуточного остатка на каком-либо шаге деления. На следующем шаге к нулевому остатку, который имеет знак “+”, будет прибавлен отрицательный делитель или его дополнение при положительном делителе. При сдвиге полученного остатка влево на последующем шаге его величина удвоится. Сложение отрицательного остатка с положительным делителем (или с дополнением отрицательного делителя) снова дает отрицательный остаток, по модулю равный величине делителя. Если же в этом случае делимое отрицательное, то получаемый в конце операции отрицательный остаток не может быть скорректирован по общему правилу, так как имеет знак, совпадающий со знаком делимого. Вследствие этого общее правило коррекции остатка дополняется следующим: при отрицательных остатке и делимом производится сравнение модулей остатка и делителя и, если они совпадают, осуществляется коррекция остатка по общему правилу, после чего остаток становится нулевым.

 

Практическая реализация этого случая на ЭВМ может быть осуществлена следующим образом. При получении отрицательного окончательного остатка в случае отрицательного делимого делается попытка скорректировать полученный остаток. Если в результате коррекции получается нулевой остаток, он является правильным. При получении ненулевого остатка он восстанавливается путем сложения с делителем (если делитель положительный) или с его дополнением (если делитель отрицательный).

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

 

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

При использовании метода деления и дополнительных кодах условие корректности деления имеет вид:

а) │ А │/│ В │ < 2 n, при одинаковых знаках операндов;

 

б) │ A │/│ B │ < 2 n + 1, при разных знаках операндов,

где n – число цифровых разрядов частного (делителя).

 

Правая часть этих неравенств определяется максимальным по модулю целым числом, которое можно представить в формате с использованием n цифровых разрядов (с учетом знакового разряда формат частного составляет n+1 разрядов). При этом предполагается, что положительное частное представляется в прямом коде (случай а), а отрицательное – в дополнительном (случай б).

 

Для проверки корректности деления вычисляется разность:

а) │ А │–│ В │ ´ 2 n, при одинаковых знаках операндов;

 

б) │ А │–│ В │–│ В │ ´ 2 n, при разных знаках операндов – и в зависимости от знака этой разности устанавливается корректность или некорректность деления.

 

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

 

Фактически проверка корректности деления, выполняемая путем так называемого «пробного вычитания», совмещается с первым шагом деления, на котором вырабатывается знаковый разряд частного. На этом шаге при одинаковых знаках операндов производится сдвиг делимого на один разряд влево, и затем вычитание делителя (сложение его с дополнением) из его старших разрядов. Знак остатка, полученного на первом шаге, сравнивается со знаком делимого, и если они совпадают, то процесс деления завершается ввиду некорректности результата.

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

 

Особенности проверки корректности деления:

а) Нулевой остаток содержит в знаковом разряде ноль и поэтому рассматривается как положительный.

б) При сложении делимого с делителем, выровненным по младшим разрядам, старшие разряды делителя дополняются его знаковым разрядом (расширение знака на старшие разряды).

в) Некорректность деления сказывается на неправильном формировании знака частного на первом шаге деления. Действительно, при одинаковых знаках операндов частное должно иметь знак “+”, однако при совпадении знака первого остатка со знаком делимого (и следовательно делителя) в качестве знакового разряда частного сформируется единица (знак “–”). Аналогично при разных знаках операндов частное должно иметь знак “–”, но при совпадении знаков остатка и делимого (и, следовательно, несовпадении знаков остатка и делителя) в качестве знакового разряда сформируется ноль (знак “+”).

 

Пример 1. Деление с ненулевым остатком.

А = 139, В = 13.

Для иллюстрации метода используется укороченная по сравнению с заданием разрядная сетка: для делимого 10 разрядов (один знаковый и 9 – цифровых), для делителя, остатка и частного – 5 разрядов (один знаковый и 4 – цифровых).

Представление операндов с разными знаками в разрядной сетке:

[+ А ] пр = 0.010001011; [– А ] доп = 1.101110101;

[+ В ] пр = 0.1101; [– В ] доп = 1.0011.

а) Делимое положительное (A > 0), делитель отрицательный (B < 0):

 

№ шага Операнды и действия Делимое и остаток (старшие разряды) Делимое и остаток (младшие разряды), частное Пояснения
         
  [ A ] пр 0 0 1 0 0 0 1 0 1 1 Делимое
  [ B ] доп [ B ] доп 1 1 1 1 1 0 0 0 1 1   0 0 1 1 1   1 0 0 1 1 1 1 0 1 0   1 1 0 1 0 Зн R 1=Зн В 1 0 0 1 1 1 1 1 1 0   1 1 1 0│0   1 1 1 0│1   Сложение с делителем, выровненным по младшим разрядам Сдвиг остатка влево Сложение с делителем, выровненным по старшим разрядам Знак первого остатка не совпадает со знаком делимого–деление корректно Формирование знака част­ного
  [ –B ] пр 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 Зн R 2≠Зн В 1 1 0│1 0     1 1 0│1 0 Сдвиг остатка влево Вычитание делителя Формирование цифры частного
  [ B ] доп 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 Зн R 3=Зн В 1 0│1 0 0     1 0│1 0 1   Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  [ –B ] пр 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 Зн R 4=Зн В 0│1 0 1 0     0│1 0 1 1   Сдвиг остатка влево Вычитание делителя Формирование цифры частного
  [– B ] пр 1 1 1 0 0 0 1 1 0 1 0 1 0 0 1 Зн R5 Зн В 1 0 1 1 0     1 0 1 1 0   Сдвиг остатка влево Вычитание делителя Формирование цифры частного

 

В результате выполнения операции получено отрицательное частное

[ C ] доп = (1.0110)2, [ C ] пр = (1.1010)2 = (–10)10 и положительный остаток

[ R ] пр = (0.1001)2 = (+9)10, которые соответствуют истинным значениям:

(–10) ´ (–13) + 9 = 139.

 

б) Делимое отрицательное (A < 0), делитель положительный (B > 0):

 

         
  [ A ] доп 1 1 0 1 1 1 0 1 0 1 Делимое
  [ B ] пр [ B ] пр R1 0 0 0 0 0 1 1 1 0 0   1 1 0 0 0   0 1 1 0 1 0 0 1 0 1   0 0 1 0 1   Зн R 1=Зн В 0 1 1 0 1 0 0 0 1 0   0 0 1 0│0   0 0 1 0│1 Сложение с делителем, выровненным по младшим разрядам Сдвиг остатка влево Сложение с делителем, выровненным по старшим разрядам Знак первого остатка не совпадает со знаком делимого–деление корректно Формирование знака част­ного
  [ –B ] доп R2 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1   Зн R 2≠Зн В 0 1 0│1 0   0 1 0│1 0 Сдвиг остатка влево   Вычитание делителя Формирование цифры частного
  [ B ] пр R3 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1   Зн R 3=Зн В 1 0│1 0 0   1 0│1 0 1 Сдвиг остатка влево   Сложение с делителем Формирование цифры частного
  [ –B ] доп R4 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0   Зн R 4=Зн В 0│1 0 1 0   0│1 0 1 1 Сдвиг остатка влево   Вычитание делителя Формирование цифры частного
  [– B ] доп R5 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1   Зн R5 ≠Зн В 1 0 1 1 0   1 0 1 1 0   Сдвиг остатка влево   Вычитание делителя Формирование цифры частного

 

В результате выполнения операции получено отрицательное частное

[ C ] доп = (1.0110)2, [ C ] пр = (1.1010)2 = (–10)10 и отрицательный остаток

[ R ] доп = (1.0111)2, [ R ] пр = (1.1001)2 = (–9)10, которые соответствуют истинным значениям: (–10) ´ 13 + (–9) = –139.

 

 

в) Оба операнда отрицательные (A < 0, B < 0):

 

         
  [ A ] доп 1 1 0 1 1 1 0 1 0 1 Делимое
  [– B ] пр R1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0   0 0 1 0 0   Зн R 1≠Зн В 0 1 0 1│0   0 1 0 1│0 Сдвиг делимого влево Вычитание делителя Знак первого остатка не совпадает со знаком делимого–деление корректно   Формирование знака частного
  [ B ] доп   R2 0 1 0 0 0 1 0 0 1 1 1 1 0 1 1 Зн R 2=Зн В 1 0 1│0 0   1 0 1│0 1 Сдвиг остатка влево   Сложение с делителем Формирование цифры частного
  [– B ] пр   R3 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 Зн R 3≠Зн В 0 1│0 1 0   0 1│0 1 0 Сдвиг остатка влево   Вычитание делителя Формирование цифры частного
  [ B ] доп   R 4 0 1 0 0 0 1 0 0 1 1 1 1 0 1 1 Зн R 4=Зн В 1│0 1 0 0   1│0 1 0 1 Сдвиг остатка влево   Сложение с делителем Формирование цифры частного
  [– B ] пр R 5 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 Зн R 5≠Зн В 0 1 0 1 0   0 1 0 1 0   Сдвиг остатка влево   Вычитание делителя Формирование цифры частного
  [ B ] доп   R 6 1 0 0 1 1 _________ 1 0 1 1 1     0 1 0 1 0 Коррекция остатка: сложение с делителем Результат

 

В результате выполнения операции получено положительное частное

[ C ] пр = (0.1010)2 = (+10)10 и отрицательный остаток [ R ] доп = (1.0111)2, [ R ] пр = (1.1001)2 = (–9)10, которые соответствуют истинным значениям: 10 ´ (–13) – 9 = –139.

Пример 2. Деление с нулевым остатком.

 

А = 72, В = 6.

Представление операндов в разрядной сетке.

 

[+ А ] пр = 0.001001000; [– А ] доп = 1.110111000;

 

[+ В ] пр = 0.0110; [– В ] доп = 1.1010.

а) Делимое отрицательное (A < 0), делитель положительный (B > 0):

 

         
  [ A ] доп 1 1 1 0 1 1 1 0 0 0 Делимое
  [ B ] пр [ B ] пр   R 1 0 0 0 0 0 1 1 1 0 1   1 1 0 1 1   0 0 1 1 0 0 0 0 0 1   0 0 0 0 1   Зн R 1=Зн В 0 0 1 1 0 1 1 1 1 0   1 1 1 0│0     1 1 1 0│1 Сложение с делителем, выровненным по младшим разрядам   Сдвиг остатка влево Сложение с делителем, выровненным по старшим разрядам Знак первого остатка не совпадает со знаком делимого–деление корректно Формирование знака част­ного
  [– B ] доп R 2 0 0 0 1 1   1 1 0 1 0 1 1 1 0 1 Зн R 2≠Зн В 1 1 0│1 0     1 1 0│1 0 Сдвиг остатка влево   Вычитание делителя Формирование цифры частного
  [ B ] пр R 3 1 1 0 1 1   0 0 1 1 0 0 0 0 0 1 Зн R 3=Зн В 1 0│1 0 0     1 0│1 0 1 Сдвиг остатка влево Сложение с делителем   Формирование цифры частного
  [– B ] доп R 4 0 0 0 1 1   1 1 0 1 0 1 1 1 0 1 Зн R 4≠Зн В   0│1 0 1 0     0│1 0 1 0 Сдвиг остатка влево   Вычитание делителя Формирование цифры частного
  [ B ] пр R 5 1 1 0 1 0   0 0 1 1 0 0 0 0 0 0 Зн R 5=Зн В 1 0 1 0 0     1 0 1 0 1   Сдвиг остатка влево   Сложение с делителем Формирование цифры частного
  [–1] доп     0 0 0 0 0 1 1 1 1 1 _________ 1 0 1 0 0 Коррекция частного: вычитание единицы Результат

 

В результате выполнения операции получено отрицательное частное

 

[ C ] доп = (1.0100)2, [ C ] пр = (1.2100)= (–12)10 и нулевой остаток.

 

б) Оба операнда отрицательные (A < 0, B < 0):

 

         
  [ A ] доп 1 1 1 0 1 1 1 0 0 0 Делимое
  [– B ] пр R 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1   0 0 0 0 1   Зн R 1≠Зн В 1 0 0 0│0   1 0 0 0│0 Сдвиг делимого влево Вычитание делителя Знак первого остатка не совпадает со знаком делимого–деление корректно   Формирование знака частного
  [ B ] доп R 2 0 0 0 1 1 1 1 0 1 0 1 1 1 0 1 Зн R 2≠Зн В 0 0 0│0 0   0 0 0│0 1 Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  [– B ] пр R3 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 Зн R 3≠Зн В 0 0│0 1 0   0 0│0 1 0 Сдвиг остатка влево Вычитание делителя Формирование цифры частного
  [ B ] доп R4 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 Зн R 4≠Зн В 0│0 1 0 0   0│0 1 0 1 Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  [– B ] пр R5 1 0 1 0 0 0 0 1 1 0 1 1 0 1 0 Зн R 5≠Зн В 0 1 0 1 0   0 1 0 1 1   Сдвиг остатка влево Вычитание делителя Формирование цифры частного
  [– B ] пр R6 0 0 1 1 0 0 0 0 0 0   0 1 0 1 1 Коррекция остатка, совпадающего с делителем: вычитание делителя
  [+1] пр     0 0 0 0 0 0 0 0 0 1 _________ 0 1 1 0 0 Коррекция частного: сложение с единицей Результат

 

В результате выполнения операции получено положительное частное

 

[ C ] пр = (0.1100)2 = (+12)10 и нулевой остаток.

 

Пример 3. Получение максимального по модулю частного и фиксация некорректности деления.

 

А = 254, В = 15.

 

Представление операндов в разрядной сетке.

[+ А ]пр = 0.011111110; [– А ]доп = 1.100000010;

[+ В ]пр = 0.1111; [– В ]доп = 1.0001.

 

а) Оба операнда положительные (A > 0, B > 0):

 

         
  [ A ] пр 0 0 1 1 1 1 1 1 1 0 Делимое
  [– B ] доп R 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0   1 1 1 0│0   Сдвиг делимого влево Вычитание делителя Знак первого остатка совпадает со знаком делимого – деление некорректно

 

б) Делимое положительное (A > 0), делитель отрицательный (B < 0):

 

         
  [ A ] пр 0 0 1 1 1 1 1 1 1 0 Делимое
  [ B ] доп [ B ] доп   R1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 _________ 1 1 1 1 1   1 1 1 1 1 Зн R 1=Зн В 1 0 0 0 1 0 1 1 1 1 1 1 1 1│0     1 1 1 1│1 Сложение с делителем, выровненным по младшим разрядам Сдвиг остатка влево Сложение с делителем, выровненным по старшим разрядам Знак первого остатка не совпадает со знаком делимого – деление корректно Формирование знака част­ного
  [– B ] пр R2 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 Зн R 2≠Зн В 1 1 1│1 0   1 1 1│1 0 Сдвиг остатка влево Вычитание делителя Формирование цифры частного
  [ B ] доп R3 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 Зн R 3≠Зн В 1 1│1 0 0   1 1│1 0 0     Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  [ B ] доп R4 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 Зн R 4≠Зн В 1│1 0 0 0   1│1 0 0 0 Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  [ B ] доп R5 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 Зн R 5≠Зн В 1 0 0 0 0   1 0 0 0 0   Сдвиг остатка влево Сложение с делителем Формирование цифры частного

 

В результате выполнения операции получено отрицательное частное

[ C ] доп = (1.0000)2 = (–16)10 и положительный остаток [ R ] пр = (0.1110)2 = (+14)10, которые соответствуют истинным значениям:

(–16) ´ (–15) + 14 = 254.

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

 

в) Делимое отрицательное (A < 0), делитель положительный (B > 0):

 

         
  1 1 1 0 0 0 0 0 0 1 0 Делимое
  R1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0   0 0 0 0 0 0 Зн R 1=Зн В 0 1 1 1 1 1 0 0 0 1 0 0 0 1│0     0 0 0 1│1 Сложение с делителем, выровненным по младшим разрядам   Сдвиг остатка влево Сложение с делителем, выровненным по старшим разрядам Знак первого остатка не совпадает со знаком делимого – деление корректно. Формирование знака частного
  R2 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 Зн R 2≠Зн В 0 0 1│1 0   0 0 1│1 0 Сдвиг остатка влево Вычитание делителя Формирование цифры частного
  R3 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 Зн R 3≠Зн В 0 1│1 0 0   0 1│1 0 0 Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  R4 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 Зн R 4≠Зн В 1│1 0 0 0   1│1 0 0 0 Сдвиг остатка влево Сложение с делителем Формирование цифры частного
  R5 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 0 Зн R 5≠Зн В 1 0 0 0 0   1 0 0 0 0   Сдвиг остатка влево Сложение с делителем Формирование цифры частного

 

В результате выполнения операции получено отрицательное частное

 

[ C ] доп = (1.0000)2 = (–16)10 и отрицательный остаток

[ R ] доп = (1.0010)2, [ R ] пр = (–14)10, которые соответствуют истинным значениям: (–16) ´ 15 + (–14) = –254.

 

г) Оба операнда отрицательные (A < 0, B < 0):

 

         
  [ A ] доп 1 1 0 0 0 0 0 0 1 0 Делимое
  [– B ] пр R1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1   0 0 1 0│0   Сдвиг делимого влево Вычитание делителя Знак первого остатка совпадает со знаком делимого – деление некорректно

 

 

Литература

 

1. Савельев А.Я. Прикладная теория цифровых автоматов. – М: Высш. шк., 1987. – 272 с.

2. Савельев А.Я. Основы информатики. – М.: Изд-во МГТУ им Н.Э. Баумана, 2001. — 328 с.

3. Угрюмов Е. Цифровая схемотехника – СПБ.: БХВ-Петербург, 2001. –528с.

4. Вальциферов Ю.В., Дронов В.П. ИНФОРМАТИКА: ч.1. Арифметические и логические основы ЭВМ. Учебное пособие. – М: Московский государственный университет экономики, статистики и информатики: 2005. – 253 с.

5. Гуров В.В., Чуканов В.О. Основы теории и организации ЭВМ. –Интернет-университет информационных технологий - ИНТУИТ.ру, 2006.

 


Приложение 1

Варианты заданий

Таблица 1

A B A B A B
1.   0,009 41.   0,105 81.   0,205
2.   0,008 42.   0,305 82.   0,405
3.   0,007 43.   0,505 83.   0,011
4.   0,006 44.   0,605 84.   0,022
5.   0,005 45.   0,705 85.   0,033
6.   0,004 46.   0,805 86.   0,044
7.   0,003 47.   0,905 87.   0,066
8.   0,002 48.   0,115 88.   0,077
9.   0,001 49.   0,125 89.   0,088
10.   0,09 50.   0,135 90.   0,099
11.   0,08 51.   0,145 91.   0,111
12.   0,07 52.   0,155 92.   0,222
13.   0,06 53.   0,165 93.   0,333
14.   0,05 54.   0,175 94.   0,444
15.   0,04 55.   0,185 95.   0,555
16.   0,03 56.   0,195 96.   0,666
17.   0,02 57.   0,205 97.   0,777
18.   0,01 58.   0,215 98.   0,888
19.   0,15 59.   0,225 99.   0,999
20.   0,25 60.   0,235 100.   0,12
21.   0,35 61.   0,245 101.   0,23
22.   0,45 62.   0,255 102.   0,34
23.   0,55 63.   0,265 103.   0,46
24.   0,65 64.   0,275 104.   0,56
25.   0,75 65.   0,285 105.   0,67
26.   0,85 66.   0,295 106.   0,78
27.   0,95 67.   0,305 107.   0,89
28.   0,123 68.   0,238 108.   0,076
29.   0,022 69.   0.792 109.   0.844
30.   0.127 70.   0.094 110.   0.062
31.   0.794 71.   0.845 111.   0.305
32.   0.379 72.   0.568 112.   0.367
33.   0.635 73.   0.478 113.   0.631
34.   0.046 74.   0.077 114.   0.048
35.   0.602 75.   0.162 115.   0.792
36.   0.263 76.   0.632 116.   0.196
37.   0.841 77.   0.703 117.   0.569
38.   0.368 78.   0.365 118.   0.946
39.   0.074 79.   0.052 119.   0.037
40.   0.567 80.   0.842 120.   0.479

 

Таблица 2

R S R S
1. 41A40000 BC8A0000 61. 40B40000 BF3A0000
2. C1B80000 3C4B0000 62. C1C50000 3E7B0000
3. 423E5000 BD250000 63. 41D60000 BD6C0000
4. C25C2000 3D1A0000 64. C2E70000 3F9E0000
5. 4310DC00 BE320000 65. 42F8B000 BE5F0000
6. C320FD00 3E5B0000 66. C3A90700 3D4C0000
7. 419A0000 BF680000 67. 43BA0200 BFA40000
8. C1AB0000 3F790000 68. C0CB0000 3EB60000
9. 424B3000 BC1A0000 69. 40DC0000 BDF90000
10. C23CF000 3C2D0000 70. C1EDC000 3FD70000
11. 4310D500 BD460000 71. 41F68000 BEB30000
12. C320E300 3D870000 72. C29F4000 3DC50000
13. C39CE000 3DB40000 73. 42FBD000 BFF40000
14. 42BEC000 BFBF0000 74. C3FD0000 3FA10000
15. C3CFD000 3D8B0000 75. 42FB0000 BED60000
16. 41C0D300 BEA80000 76. C22F0000 3EA70000
17. C3A0B000 3D7B0000 77. C3AA0000 3CEC0000
18. 43F40200 BF1A0000 78. 42B80000 BE650000
19. 40AB0000 BEC60000 79. 434B0000 BEAF0000
20. C2E48000 3DC70000 80. 42ED0000 BECD0000
21. 42F27000 BDE30000 81. B56D0000 435CB000
22. 41FF0000 BE980000 82. 42AE0800 BFE70000
23. C1E08000 3EA70000 83. C3BD0500 3EC80000
24. 426A7000 BFB50000 84. 43CC0700 BDD90000
25. C2A98000 3F8A0000 85. C0EB0000 3FE10000
26. 43AA0000 BCDC0000 86. 40FA0000 BEF70000
27. C380F000 3C4B0000 87. C119C000 3D780000
28. 41FC0000 BD890000 88.   BFD70000
29. C1B10000 3D470000 89. C237A000 3FA50000
30. 42ABC000 BEF60000 90.   BDB30000
31. C2FF0000 3EA00000 91. C3598400 3FCB0000
32. 43FA0000 BFD50000 92. C0D40000 3E5A0000
33. C11F0000 3EC70000 93. 436A7600 BDBC0000
34. C33A0000 3C290000 94. C0780000 3F830000
35. 41B90000 BE580000 95. 408C0000 BEA90000
36. 43AF0000 BEBС0000 96. C19DE000 3DF40000
37. 43E40000 BED00000 97. 41AEC000 BEDF0000
38. B51




Поделиться с друзьями:


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 576 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

2194 - | 2136 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.