30 Операции над числами с фиксированной точкой. Алгоритмы. Реализация. (1006351)
Текст из файла
30 Операции над числами с фиксированной точкой. Алгоритмы. Реализация.
-
Выполнение операции сложения чисел с фиксированной точкой
Сложение чисел, представленных в прямом коде дает неправильный результат (при сложении положительных и отрицательных чисел).
Для сложения отрицательных чисел используют дополнительное кодирование:
Если x 0 - дополнительный код =прямому коду,
если x < 0, то
=2n-1 - |а| - значимая часть кода, а
=2n - |а| - это дополнительный код со знаком,
где n- число разрядов, включая знаковый слева,
если x>0,то знаковый разряд =0,
если x<0, то знаковый разряд =1.
Сложение чисел представленных в дополнительном коде
-
x.0 и y0
Обычное сложение. Правило будет работать, если не будет переполнения, т.е., если |z|<2 n.
-
x.>0 и y<0
=
+
=|x|+2n-1-|y|= а) |x||y|, 2n-1+(|x|-|y|)
б) |x|<|y|, 2n-1-(|y|-|x|)
-
x.<0 и y>0 (см. случай 2)
-
x.<0 и y<0
=
+
=2n-1-|x|+2n-1 -|y|=2n-1+2n-1 -(|x|+|y|)
z2n -переполнения нет, если z>2n, то будет переполнение разрядной сетки.
Переполнение. Оно существует когда результат z>2n, и не существует когда z2n. Если было переполнение, то был перенос в знаковый разряд, а из знакового не было, либо наоборот- есть перенос из знаковой части, а в знаковую часть нет переноса - тогда результат неверен. Если одновременно отсутствует или присутствуют переносы в знаковую и из знаковой части , то переполнения нет и результат верен.
Способы определения переполнения.
-
фиксировать переносы в знаковую и из знаковой части. Для этого вводится 2 триггера: Т1 - фиксирует перенос в знаковый разряд, Т2 -фиксирует перенос из знаковой части.
Т1+Т2=Тпер (Триггер переполнения).
-
для x и y отводится под знаковый разряд два разряда. Если совпадают значения знаковых разрядов, то переполнения нет, а если различны, то переполнение есть.
Сложение можно выполнять и в обратном коде
Обратное кодирование
Если а0, то обратный код = прямому,
а<0, то обратный код числа x это а’=2n-1-1-|a’|
например для n=4 дополнительный код числа «-5»=23-1-5=2=1010.
Связь обратного и дополнительного кодов: а’+
=1.
Сложение чисел представленных в обратном коде
z’=x’+y’ рассмотрим 4 случая:
-
x>0, y>0, простое сложение
-
x>0, y<0,
z’=|x|+2n-1-|y|-1= a) 2n-1+(|x|-|y|)-1, если |x|>|y
б) 2n-1-(|y|-|x|)-1, если |x|<|y|
в б) результат в обратном коде,
в а) результат неверный, поэтому его надо корректировать с помощью циклического переноса.
Пример: x=5 0101
y=-2 1101
0010
1
0011 - «3» в прямом коде
-
x<0, y>0,см. случай 2
-
x<0, y<0,
z’=x’+y’=2n-1-|x|-1+2n-1-|y|-1=2n-1+[2n-1-(|x|+|y|)-1]-1 , результат в дополнительном коде , результат также корректируется с помощью циклического переноса.
Пример: x=-5 1010
y= -1 1110
1000
1
1001 - «-6» в обратном коде.
Вычитание чисел в дополнительном и обратном кодах
Операция вычитания сводится к операции сложения за счет того, что вычитаемое число записывается либо в дополнительном, либо обратном кодах.
z’=x’-y’=x’+(-y’).
Микропрограмма и оборудование АЛУ для выполнения операции сложения и вычитания чисел с фиксированной точкой
В состав АЛУ входят n-разрядный параллельный комбинационный сумматор-(КС), регистр сумматора RC, входные регистры сумматора RА и RВ, входной регистр АЛУ- R1. Длина всех регистров =длине операндов=n.
Швх
RA RB
R1
+1
RC
Швых
При выполнении операции сложения положительные слагаемые представляются в прямом, а отрицательные - в дополнительном коде и производится сложение двоичных кодов, включая разряды знаков. Если все операнды в дополнительном коде, то и результат тоже в дополнительном коде, если операнды в прямом коде, то и результат в прямом коде.
Из оперативной памяти по входной информационной шине Швх в АЛУ поступают операнды: положительные числа в прямом, а отрицательные в дополнительном кодах. Операнды помещаются в регистр А (RA)-первое слагаемое, и регистр B (RВ)- второе слагаемое. Регистр R1 связан с RВ.
В случае операции сложения второй операнд переписывается в регистр RA без изменения. Если выполняется операция вычитания, то операнд переписывается в RA в обратном коде. Далее, в зависимости от кода операции происходит суммирование операндов RA+RB, либо суммирование с добавлением 1 ( в случае вычитания). Результат операции записывается в регистр суммы РС, он выдается из АЛУ в оперативную память по выходной шине Швых..
При выполнении операции в АЛУ помимо результата операции формируется двухразрядный код признака результата комбинационной схемы ПР, который принимает следующие значения:
Результат операции Признак результата
0 0 0
<0 0 1
>0 1 0
переполнение 1 1
Операция алгебраического вычитания может быть сведена к изменению знака вычитаемого Y и операции алгебраического сложения.
Z=X-Y=X+(-Y)
В этом случае принятый в регистр RB код числа предается инверсно в регистр R1 и при сложении осуществляется подсуммирование 1 в младший разряд сумматора.
Передача информации в регистрах АЛУ производится отдельными микрооперациями:
RA:=Швх (прием 1-ого операнда)
RB:=Швх (прием 2-ого операнда)
если сложение, то RB:=R1 иначе
если сложение, то RC:=RА+RВ иначе
вычитание RC:=RА+RВ +1;
если ПР=11,то переполнение, иначе
Швых:=RC (выдача результата);
конец;
Рассмотрим работу программы на примере:
1-ое слагаемое 1210=011002
2-ое слагаемое -510=110112 ( т.к. число отрицательное, то в допол. коде)
RA:=01100
RB:=11011
если сложение, то RB:=R1, т.е. RB:=11011, иначе
RB:=
, т.е. RB:=00100 (обрат.код числа-5);
если сложение, то RC:=RA+RВ, т.е. 11011
01100 001112=710 , иначе
RC:=RА+RВ+1, т.е. 00100
01100
10000
1
100012=1710
Результат при сложении: 12+(-5)=710=001112
Результат при вычитании: 12-(-5)=12+5=1710=10001
-
Выполнение операции умножения над числами с фиксированной точкой
В обычных машинах операцию умножения выполняют, заменяя умножение сложением:
Х-множимое, n
У-множитель, n результат 2n
Тогда z=x+z y раз.
Способы умножения:
-
Без ускорения умноженя
-
Ускоренное умножение
Существует четыре способа умножения:
-
Умножение чисел, начиная с младших разрядов множителя при сдвиге множимого влево и неподвижной сумме частичных результатов.
Если младший разряд множителя=1, то к сумме частичных произведений прибавляется множимое; если младший разряд множителя =0, то прибавление не делается. Делается сдвиг множимого на каждом шаге на 1 разряд влево, а сумма частичных произведений (промежуточный результат) остается неподвижной. Число сдвигов =N
Пример: x=6
y=5
0000
+0110
0110
+0000
00110
+0110
011110
+0000
0011110 = 30
-
Умножение чисел, начиная с младших разрядов множителя со сдвигом вправо суммы частичных произведений и неподвижном множимом.
Пример: x=6 0110
y=5 0101
0000
0110
0110
00110
0000
00110
000110
0110
011110
0011110
0000
0011110
00011110 -«30»
-
Умножение чисел, начиная со старших разрядов множителя при сдвиге суммы частичных произведений влево и неподвижном множимом.
x=6
y=5
0110
0101
0000
0000
+ 0110
00110
00110
+ 0000
001100
001100
+ 0110
0011110 = 30
4) Умножение чисел, начиная со старших разрядов множителя при сдвиге множимого вправо и неподвижной сумме частичных произведений.
x=6
y=5
0110
0101
0000
+ 0110
00110
+ 0000
001100
+ 0110
0011110 = 30
Из указанных способов наиболее распространенным является второй способ (меньше оборудования тратится).
Алгоритм умножения целых положительных чисел (чисел в прямом коде):
-
sign(x)=sign(y)=0;
-
умножение;
-
формирование результата с учетом знака.
Структурная схема АЛУ для выполнения умножения по 2 способу.
С=АВ, А,В - N разрядов
С - 2N разрядов
Рг1- множимое,
РА- либо множимое, либо 0,
Рг2 - множитель,
Рг2, Рг3 -для сдвига множителя,
СМ - сумма частичных произведений,
РВ - для хранения промежуточного результата, который будет участвовать на следующем шаге сложения,
РС - сдвинутая на 1 разряд вправо сумма частичных произведений.
Операнды в АЛУ записываются в прямом коде. Множимое хранится в регистре Рг1, множитель в регистре Рг2. Для осуществления сдвига множителя вправо используется Рг2 и Рг3. Результат операции умножения будет формироваться в регистрах РС и Рг2, в РС- старшая часть, в Рг2 -младшая. Анализ множителя начинается с младшего разряда, т.е. на каждом шаге анализируется нулевой разряд регистра Рг2и после анализа содержимое этого регистра сдвигается вправо на один разряд. Если нулевой разряд регистра Рг2=1, то к промежуточному результату прибавляется множимое, а если в нулевом разряде множителя стоит ноль, то прибавления множимого не происходит. Знак произведения формируется в результате анализа знаков сомножителей. Если сомножители имеют одинаковые знаки, то произведение получается положительным. Если знаки различны - произведение будет отрицательным. После определения знака результат знаковые разряды сомножителей обнуляются, и умножение производится над положительными числами. При выполнении операции умножения используется не модифицированный сдвиг, т.е. при сдвиге промежуточного произведения старший разряд заполняется нулем.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.












