Операции над машинными кодами чисел 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операции над машинными кодами чисел



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

Здесь показаны правила сложения двоичных цифр ai, bi одноименных раз­рядов с учетом возможных переносов из предыдущего разряда pi-1.

Подобные таблицы можно было бы построить для любой другой ариф­метической и логической операции (вычитание, умножение и т.д.), но имен­но данные этой таблицы положены в основу выполнения любой операции ЭВМ. Под знак чисел отводится специальный знаковый разряд. Знак «+» кодируется двоичным нулем, а знак «-» - единицей. Действия над прямыми кодами двоичных чисел при выполнении операций создают большие трудно­сти, связанные с необходимостью учета значений знаковых разрядов:

 

Таблица 1.4

Значения разрядов двоичных чисел а и b Разряд суммы Si Перенос в следующий разряд Рi
ai bi pi-1
         
         
         
         
         
         
         
         

• во-первых, приходится отдельно обрабатывать значащие разряды чисел и разряды знака;

• во-вторых, значение разряда знака влияет на алгоритм выполнения опе­рации (сложение может заменяться вычитанием и наоборот).

Во всех ЭВМ без исключения все операции выполняются над числами, представленными специальными машинными кодами. Их использование по­зволяет обрабатывать знаковые разряды чисел так же, как и значащие раз­ряды, а также заменять операцию вычитания операцией сложения.

Сложение (вычитание). Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код. Пусть числа А≥0 и В≥0, тогда операция алгебраического сложения выпол­няется в соответствии с табл. 1.5.

Таблица 1.5

Таблица преобразования кодов при алгебраическом сложении

Требуемая операция Необходимое преобразование
А+В А-В -А+В -А-В А+В А+(-В) (-А)+В (-А)+(-В)

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

1. Слагаемые должны иметь одинаковое число разрядов. Для выравни­вания разрядной сетки слагаемых можно дописывать нули слева к целой части числа и нули справа к дробной части числа.

2. Знаковые разряды чисел участвуют в сложении так же, как и значащие.

3. Необходимые преобразования кодов (п.1.2.) производятся с измене­нием знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу.

4. При образовании единицы переноса из старшего знакового разряда, в случае использования ОК, эта единица складывается с младшим числовым разрядом. При использовании ДК единица переноса отбрасывается. Знак результа­та формируется автоматически, результат представляется в том коде, в кото­ром представлены исходные слагаемые.

Пример 1.17. Сложить два числа А 10=7 В 10=16

А2 = +111;

В2 = +10000.

Исходные числа имеют различную разрядность, необходимо провести выравни­вание разрядной сетки:

[ A 2]пк = [ A 2]oк = [ A 2]дк = 0.00111;

[ В 2]пк = [ В 2]ок = [ В 2]дк = 0.10000.

Сложение в обратном или дополнительном коде дает один и тот же результат 0.00111

+

0.10000

С (2) = 0.10111

С(10) = +23.

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

Пример 1.18. Сложить два числа А 10 =+ 16 В= -7 в ОК и ДК.

В соответствии с табл. 1.5 должна быть реализована зависимость А+(-В), в кото­рой второе слагаемое преобразуется с учетом знака

[A2]пк = 0.10000 = 0.10000 [А2]ок = 0.10000 [А2]дк = 0.10000;

[B2]пк = 1.00111 = 1.00111 [В2]ок = 1.11000 [В2]дк = 1.11001.

 

Сложение в OK Сложение в ДК

2]ок = 0.10000 [A2] = 0.10000

+[В2]ок = 1.11000 +[B2] = 1.11001

1 0.01000 10.01001

+ 1

0.01001

C2 = 0.01001 C2 = 0.01001

C10 = +9 C10 = +9

 

При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда (см.п.4 правил). В случае ДК этот перенос игнорируется.

Пример 1.19. Сложить два числа А 10 =- 16 В= +7 в ОК и ДК.

В соответствии с табл. 1.3 должна быть реализована зависимость

(-А)+В, в кото­рой первое слагаемое преобразуется с учетом знака

[A2]пк = -10000 = 1.10000 [А2]ок = 1.01111 [А2]дк = 1.10000;

[B2]пк = + 00111= 0.00111 [В2]ок = 0.00111 [В2]дк = 0.00111.

Сложение в OK Сложение в ДК

2]ок = 1.01111 [A2] = 1.10000

+[В2]ок = 0.00111 +[B2] = 0.00111

1.10110 1.10111

При сложении чисел в ОК и ДК были получены отрицательные результаты («1» в знаковом разряде). Для перевода обратного кода отрицательного числа в прямой необходимо инвертировать значащие разряды, а знаковый разряд оставить без изменения. А для перевода дополнительного кода отрицательного числа в прямой код необходимо инвертировать значащие разряды и прибавить единицу младшего разряда.

т.о. имеем в ПК из ОК 1.01001, а в ПК из ДК 1.01000

+ 1

т.е. [С2]пк = 1.01001 [С2]пк = 1.01001

C10 = -9 C10 = -9

Умножение. Умножение двоичных чисел реализуется в прямом коде. Рассмотрим, каким образом оно приводится к операциям сложения и сдвигам.

Пример 1.20. Умножить два числа А10 = +7 В10 = - 5.

Перемножим эти числа, представленные прямыми двоичными кодами, так же, как это делается в десятичной системе.

[ A 2]п = 0.111 -множимое (операнд 1 – ОП1);

[ В 2]п = 0.101 - множитель (операнд 2 – ОП2»);

000 - обнуление регистра частичных сумм (РЧС);

+ 111 – мл. разряд ОП2 равен «1», поэтому к РЧС +ОП1;

1 такт å = 111 – результирующее значение РЧС;

® 0111 – сдвиг РЧС вправо на один разряд;

2 такт å = 00111 –очередной р-д ОП2=«0», поэтому только сдвиг

+ 111 - оч. разряд ОП2 равен «1», поэтому к РЧС +ОП1

3 такт å= 100011 - результирующее значение РЧС;

® 100011 - сдвиг РЧС вправо на один разряд.

Знак произведения определяется путем сложения по «модулю 2» знаков сомножителей (0 Å 0 = 0)

[ С 2]пк = 0.100011. Таким образом, С 10 = + 35.

Нетрудно видеть, что произведение получается путем сложения част­ных произведений, представляющих собой разряды множимого, сдвинутые влево в соответствии с позициями разрядов множителя. Частные произведе­ния, полученные умножением на нуль, игнорируются. Важной особенностью операции умножения n-разрядных сомножителей является увеличение раз­рядности произведения до п+п=2п. Знак произведения формируется путем сложения по модулю "2" знаковых разрядов сомножителей. Возможные переносы из знако­вого разряда игнорируются.

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

Отметим, что делимое перед операцией деления должно быть приведено к 2 n -разрядной сетке. Только в этом случае при делении на n -разрядный делитель получается n -разрядное частное.

Знак частного формируется также путем сложения по «модулю 2» знаковых разрядов делимого и делителя, как это делалось при умножении.

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

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

n наличие переноса из значащих разрядов в знаковый и отсутствие переноса из знакового разряда («положительное» переполнение);

n наличие переноса из знакового разряда и отсутствие переноса из значащих в знаковый разряд («отрицательное» переполнение).

Пример 1.21. Сложить 2 числа: А=+5 и В=+6 в четырехразрядной сетке (с учетом знакового разряда).

Сложение в OK Сложение в ДК

2]ок = 0.101 [A2] = 0.101

+[В2]ок = 0.110 +[B2] = 0.110

1.011 1.011

 

C2 = 1.100 C2 = 0.101

C10 = -4???(вместо +11)! C10 = -5??? (вместо +11)!

 

 

Пример 1.22.

Сложить 2 числа: А=-5 и В=-6 в четырехразрядной сетке (с учетом знакового разряда).

Сложение в OK Сложение в ДК

2]ок = 1.010 [A2] = 1.011

+[В2]ок = 1.011 +[B2] = 1.100

10.101 10.111

0.110

C2 = 0.110 С2 = 0.111

C10 = +6??? (вместо -11)! C10 = +7??? (вместо -11)!

Как видно из примеров, при сложении положительных чисел получается отрицательный результат и наоборот. Это объясняется тем, что в трех значащих разрядах максимальное число по модулю может быть семь, а в примерах необходимо записать соответственно С=+11 и С=-11.

 

Задания для работы на занятии:

1. Перевести из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную и двоично-десятичную числа:

-175,34;

-256,75.

2. Перевести из двоичной системы счисления в десятичную, восьмеричную, шестнадцатеричную и двоично-десятичную числа:

-10000111010101,1001;

-1111100010101111100101,10101.

3. Образовать все виды машинных кодов от чисел:

35 и -44. Выполнить их сложение во всех кодах и проверить правильность результата.

4. Умножить в машинных кодах числа:

-5 и +9;

-3 и –8. Результат проверить.

5. Представить числа 35 и –44 в форме с плавающей запятой и показать их размещение в шестнадцатиразрядной сетке ЭВМ. Выполнить сложение в форме с плавающей запятой. Проверить правильность результата.

 

Контрольные вопросы:

 

1. Что понимается под системой счисления?

2. Сформулируйте правила перевода целых и дробных чисел из одной системы счисления в другую?

3. Как переводятся числа в системах счисления с основаниями, кратными степени 2?

4. Каково назначение обратного и дополнительного кодов?

5. Каково назначение модифицированных обратного и дополнительного кодов?

 

Задание на самоподготовку:

1. Составить и выполнить по одному примеру на решение задач по

· переводу чисел из одной системы счисления в другую;

· образованию машинных кодов;

· их сложению, вычитанию и умножению.

2. Подготовиться к ПЗ№2 "Минимизация логических функций".

 

Литература:

1. Пятибратов А.П. и др. Вычислительные системы, сети и телекоммуникации: Учебник.-2-е изд., перераб. и доп./ А.П.Пятибратов, Л.П. Гудыно, А.А.Кириченко; Под ред. А.П.Пятибратова. М.: Финансы и статистика, 2002.-512с:ил.

2. Каган Б.М. Электронные вычислительные машины и системы: Учеб. Пособие для вузов.-3-е изд.,перераб и доп.-М.: Энергоатомиздат,1991.-592с.:ил.

3. Нешумова К.А. Электронные вычислительные машины и системы. М.: Высшая школа, 1989.-366с.:ил.

 

 


 



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 2782; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.58.169 (0.032 с.)