Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Представление отрицательных чисел



 

Один из способов выполнения операции вычитания – замена знака вычитаемого на противо-положный и прибавление его к уменьшаемому:

А – В = А + (-В).

Таким образом, операцию арифметического вычитания заменяют операцией алгебраического сложения, которая и становится основной операцией в ЭВМ.

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

Прямой код числа А = -0,а1а2…аn – машинное изображение этого числа в виде
[А]пр =1,а1а2…аn. Из определения следует, что в прямом коде все цифровые разряды отрицательного числа остаются неизменными, а в знаковой части записывается единица. Например, если А=-0,101110, то [А]пр =1,101110. Положительное число в прямом коде не меняет своего изображения. Например, если А = 0,110101 , то [А]пр = 0,110101.

В прямом коде в разрядную сетку цифрового автомата можно записать следующее макси-мальное по абсолютному значению число [А]пр max = 0,11…1 = 1- 2-n, где n – количество разрядов разрядной сетки цифрового автомата.

Диапазон изменения машинных изображений для прямого кода лежит в пределах

- (1 – 2 n) ≤ [A]пр ≤ (1- 2-n).

Ранее прямой код был использован для записи чисел в разрядной сетке цифрового автомата.

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

[A]пр = А, если А ≥ 0,

[A]пр = 1 + │А│, если А ≤ 0.

Дополнительный код числа А = -0,а1а2…аn – такое машинное изображение этого числа
[А]д= 1,b1b2…bn, для которого bi = 0 при ai = 1, и bi = 1 при ai = 0, за исключением последнего значащего разряда, для которого bk = 1 при аk = 1. Например, число А = -0,101110 запишется
в дополнительном коде так: [А]д = 1,010010.

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

|А| + [А]д = q,

где |А| – абсолютное значение числа А.

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

[A]д = А, если А ≥ 0,

[A]д = q – │А│, если А ≤ 0.

 

Максимальное дополнительное число, представляемое при этом, равно (1-2-n).

Наибольшее отрицательное число, которое можно записать в дополнительном коде, опреде-лим следующим образом. Предположим, что наибольшее отрицательное число A1 = -0,11...11. Тогда изображение этого числа в дополнительном коде [A1]д = 1,00...01. Если к числу A1 добавить единицу в самый младший разряд, то в результате получим число -1,00...0. Преобразовав это число по формальным правилам, получим [A]дmin =1,00...0.

Следовательно, диапазон изменения машинных изображений чисел для формы представления с запятой, фиксированной перед старшим разрядом, в дополнительном коде

1 ≤ [A]д ≤ (1-2-n).

Машинные изображения чисел – всегда целые числа. При этом наибольшее положительное число состоит из целой части, все разряды которой равны единице, и знакового разряда, равного нулю (например, в случае 16 двоичных разрядов (два байта) максимальное положительное число имеет вид 0111111111111111, т.е. равно 215-1); наибольшее отрицательное число состоит из целой части, все разряды которой равны нулю, и знакового разряда, равного единице, т.е. имеет вид 1000000000000000. В этом случае говорят о форме представления чисел с фиксированной точкой.

Обратный код числа А =-0,а1а2...аn – такое машинное изображение этого числа [А]об = 1,
с1 с2...сn, для которого сi = 0, если Ai = 1 и сi = 1, если аi = 0. Из определения следует, что обратный код двоичного числа является инверсным изображением самого числа, в котором все разряды исходного числа принимают инверсное (обратное) значение, т.е. все нули заменяются на единицы, а все единицы – на нули. Например, если А = -0,101110, то [A]об=1,010001. Для обратного кода чисел, представленных в форме запятой, фиксированной перед старшим разрядом, справедливо соотношение

│А│ + [A]об = q – q n,

где │А│ – абсолютная величина А; n – количество разрядов после запятой в изображении числа.

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

[A]об = А, если А ≥ 0,

[A]об = q – q -n, если А ≤ 0.

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

В обратном коде можно изображать максимальное положительное число [A]обmах=0,11...1 = 1-2 -n и наибольшее отрицательное число [A]обmin = -0,11…1 записываемое в виде 1,00...0.

При проектировании цифровых автоматов необходимо учитывать неоднозначное изображение нуля в обратном коде: +0 изображается 0,00...0, а -0 изображается 1,11...1.

 

3.10. Выполнение арифметических операций над числами с фиксированной
и плавающей запятой

Популярность двоичной системы счисления во многом определяется простотой выполнения арифметических действий (табл. 3.7).

Таблица 3.7

Арифметические действия

Сложение Вычитание Умножение
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = (1) 0 Перенос в старший разряд 0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 0 – 1 = (1) 1 Заем в старшем разряде 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 + 1 = 1  

 

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

C = A v B,

где v- знак арифметического действия (сложение, вычитание, умножение, деление).

Операндчисло, участвующее в арифметической операции, выполняемой цифровым автоматом.

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

[C] = [A] v [B],

где в квадратных скобках [ ] – обозначения автоматных изображений операндов.

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

Двоичный полусумматорустройство, выполняющее арифметические действия по правилам, указанным в табл. 3.8.

На основе правил двоичной арифметики можно записать правила сложения двоичных цифр так, как показано в табл. 3.9, где ai, bi – разряды операндов А и Всоответственно; сi – разряд суммы; пi – перенос из данного разряда в соседний старший.

Таблица 3.8

Двоичный полусумматор

ai bi сi пi

 

Таблица 3.9

Правила выполнения арифметических действий

ai bi пi-1 сi пi

Появление единицы переноса при сложении двух разрядов несколько изменяет правила сложения двоичных цифр (см. табл. 3.9).

Обобщая вышеизложенное, можно сформулировать правила поразрядных действий при сложении операндов А и В:

ai + bi + пi-1 = ci + пi,

где пi-1 – перенос из (i-1)-го разряда; пi – перенос в (i+1)-й разряд (переносы принимают значения 0 или 1).

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

Рис. 3.5. Условное обозначение двоичных полусумматора и сумматора

 

На основе правил двоичной арифметики можно записать правила вычитания двоичных цифр так, как показано на табл. 3.10, где zi+1 – заем в старшем разряде.

Таблица 3.10

Правила вычитания двоичных цифр (заем в старшем разряде)

ai bi ci zi+1
-1

 

Заем равносилен вычитанию единицы из старшего разряда. С учетом единицы заема из старшего соседнего разряда правила вычитания двоичных цифр можно записать так, как показано в табл. 3.11 (чтобы отличить заем от переноса, перед единицей поставлен знак минус).

Таблица 3.11

Правила вычитания двоичных цифр (заем из старшего соседнего разряда)

ai bi zi ci zi+1
–1
–1 –1
–1
–1 –1
–1 –1

 

Если А – уменьшаемое (1-й операнд), В – вычитаемое (2-й операнд), то для поразрядных действий

ai – bi + zi =ci + zi+1.

Двоичный вычитательустройство, выполняющее арифметическое действие по правилам, указанным в табл. 3.11.

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

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

Таблица 3.12

Правила сложения двоичных цифр

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

 

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

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

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

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



Просмотров 794

Эта страница нарушает авторские права




allrefrs.su - 2024 год. Все права принадлежат их авторам!