Файл: Основы теории алгоритмов учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.10.2024

Просмотров: 104

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

S(4+*)A—> S(V++)l ,

i, (¥+*)**'+pi = р м + S(w)i, (¥<-?)'i ,

( i - k, k - l , . . . , 2) - pK- 2)i

S(v*+h,('£+'k)?+pi. - S cv+ ty/tf+ yjj ,

Если младшие части слагаемых хранить в памяти мавшны

Л положительный 'знаком, то система (4.9') примет вид

о,ч>1+ о,у-+pt -рм +о,0*+у)?1

Ц=к, к-ц..., 2-

рк=о)-

 

S v . f i + S ^ p f i ' + p i = 2 •- S f v + ^ i . C t f + ^ r j

0 , ( ^ + r ) r + p i “ p n + o . Cvf+ y) - ,

 

( i = k ,

2;

 

(4.10)

pi =

 

( ' i <• y ) i .

 

то получим ал­

Если не учитывать циклический перенос,

горитм с погрешностью ^

2

:

 

0 , v i + О, У / f P i - р ы + 0 , ( * + у ) 1 ,

 

( t'k , k-i,

2;

рк = 0);

(4.II)

S v t . f i +

+ Pi -

C ^ + y ) i •

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

О, Ч>1 + 0 ,ri + Pi

=

+ о, ( iffY)l ,

( i - k , k-i, • ••,

2 ;

р к « 0 ) ;

(4 *12)

Svt, 4>L■+ S%, fi f pi = S( t f , c

V l .

Здесь младшие части длинных чисел можно хранить с по­ ложительным знаком, т.к. это не влияет на процесс сложения. Системы (4 . II ), (4.12) одинаковы, однако для чисел, представ­ ленных в дополнительных кодах, алгоритм сложения ошибки не

/


- 99 -

вносит.

Вычитание чисел, превышающих длину разрядной сетки УВМ, через сложение в кодах можно представить как

q > _ Y = М + М - S (*.+}, £ (Ч-ЧгУс 2 ~ *

Составим итерационные последовательности вычитания для длинных чисел, представленных в памяти в прямых кодах. Если' код представления чисел в АУ обратный, то набор алгоритмов можно составлять по итерационным последовательностям:

[Sv*, fi]o + Г ~ ^ ,У г ]0 + p L ~ p n + 0, (<£-¥)*

(4.13,а)

( i * k ,

2 ; р к ~ 0 ) ;

 

fSft.V iJo + f-S fa .tiJ, + рА= 2 i S ( w ) L( - У) Г;

4’13 ’6)

S(v-*)i —> Sc*-*)i

 

 

+ p i « p t -4

+ S (* -* )< ,(^ V ')i,.

 

(L=k,k-ir .., 2 ;

p * * Z ) }

(4.13 д)

Г $ (« М *,(¥ -^Г ]о +Pi = S(4-*h, ( tf-V 'Ji •

Последовательности (4 .13,а) и (4,13,6)

можно реализовать

так же, как и (4.4)

и (4,5),

если предварительно сформировать

обратные коды слов

вычитаемого

 

 

 

 

Y j о )

( I*

k, k - i , »••) 2,1} .

 

Последовательности

(4 .1 3 ,с)

и (4.13,д) соответствуют (4.6)

я

(4 .7), а поэтому программы их будут совпадать.

<

 

Заменив в системе (4.13) выражения (4.13,с) и (4,13,д)

на последовательность

 

 

 

j

SCf-'P),

—* S c’f-'pji. I

(

2 ) ,

 

 

 

 

о - Ки

 

получим алгоритм с вносимой погрешностью * ^

,

 

Если вычитание длинных чисел проводится в дополнитель­

ных кодах, то реализуются последовательности

 

 

- [ S f l l K ]„ + z * + [ - S n jK ] o + -B*-p*-l + o l ( & y ) K

!

( Zy - отрицание Z^)



- 100 -

[ S ftV iJ o +[-S>h,Yi]o + Pi*Pi-t +€),(<£+r)i

k - * , . . . , 2 ) ;

[ S v t , » f t ] . + [ - S ^ r j e + p 1, S ( Y - 4 ' H ,

 

S ( V - f ) i —> S f e - ^ J o

 

 

*

 

 

 

O ' ~ к ,

 

2 ).

 

Для длинных чисел,

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

шины в обратных кодах

 

 

 

S * . ^ + Г“ ^ Л ' ] о + p t -

P c - t + O , ( Ч ~ Ч ') * Р f

(4.14)

k-t,...,

2;

р к ~ 0 ) }

 

Siv-vjt -* ‘S(4-*)i ,

S c v +jt, O

f - t y i + P i « р б -i + S ( ( f - 4 ’) 1/

,

(Z - k , k-i.,. . . , 2 j

 

 

5 (v-vj A /

Tj Г + p t - S (

C^ - ‘i'J [ .

 

Если младшие части уменьшаемого и вычитаемого хранят* ся в памяти машины без знаков, то система (4 .14) примет вид

ОМ + 0 ,[{Рс]о +pc~pL-i + 0,('£-i')*i ,

( L~k, k - i , . . . , 2 , рАс-О );

- IOI -

S f i i, +i [-S't'iyVi'jo+Pi ^ 2 f S ( * f - ^ u tf, -C'p) Г,

о , ( У ~ У Г + p i = pi-*-+o , ( # ~ r ) i у

(4.15)

( £ - f c ; k - i , . . . , 2 ; p « = z ) ;

+ pi - •

Формируя в системах (4.14) и (4.15) для каждого олова вычитаемого его обратный код, эти последовательности можно реализовать так же, как и системы (4.9) и (4.10) соответствен но.

Бели в системе (4.15) не учитывать циклический переноо то получим алгоритм о вносимой погрешностью <» 2 ** , при этом (4.15) примет вид

О,

+ 0 ,[^ l]o fP c =рi-i +0, (<£-¥)L,

 

( ь ~ к,

2 )

рк = 0 ) ;

(4Л 6)

< 5 ^ , ^

+

о + Pi -

S ( tf-4,)j., №

- ¥ ) 1 .

Для длинных чисел, представленных в ячейках памяти ма­ шины в дополнительных кодах, вычитание их можно осуществить

че£рз последовательности

 

 

О, ft + 0> [ % ] 0 -t-pL=*pi-i+0,(*£~'>ijl j

(4.1?)

< L ~ K k - i , , . . , 2 ;

=

 

$ 4 i ,

i+l[- 5t i ,4*Je + pi * S(jr-*j1;(if- 4 ? )I .

Система (4.17) может быть реализована, как (4 .1 2 ), ес-

#и олова

вычитаемого инвертировать и

рк

принять равным

2 К!1

.Вносимая ошибка такого алгоритма равна нулю. Если

принять,

что

рк= 0, то система (4.17)

будет

соответствовать

(4 .1 6 ),

ошибка которой ^ 2 ~**,

 

 

Умножение длинных чисел будем осуществлять путём nepe-f


- г а з - множения юс отдельных слов с последующим сложением полученных

частичных произведений.

 

 

 

 

 

 

 

 

 

 

Для длинных чисел

 

 

^

 

 

 

i

 

 

 

i."l

 

 

 

y

-

Z

^

2-j" .

 

j

 

 

 

 

 

 

 

 

i=t

 

отдельных слов

\

представленных в прямых кодах,

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

( * * * ) ( % ?

*

)

-

 

(

 

m

 

^

2

 

Произведение отдельного

слова

 

на длинное Число

j

Y* можно найти из йгерационной

носледоватёльности

|

( % 2 ~ in)(4 'i

z *

) + Р а ч , 2 - <С+* " ’

-

 

 

i

 

-

 

 

 

 

П « . л

 

 

,

 

(4.18)

j

 

 

 

 

 

 

 

 

 

 

 

Q - k , k 4 , . . . , 2 , U

Р ( н к ) - 0 ) .

 

 

йлеоь

'<■ -

множитель,

a

T

-множимое.

 

 

 

 

Реализация данной последовательности даст

 

 

№ 2 -“ j T f - f U - ' V Z

 

 

2

 

 

 

 

илиИ

 

 

 

 

 

i " 1

 

 

 

 

 

 

 

 

( f

 

Z

 

 

П

«

*

Л

2 '

^

 

Для

 

j =50

 

 

 

 

 

 

 

 

 

t = К

имеем

 

 

 

 

 

 

 

 

(

*

O

 

к

 

v

 

 

-

П

*

 

 

 

 

 

 

5

первое длинное частичное произведение.

 

f ’ *

 

 

 

Обозначим через

«Д1+1-=-

 

f i t

2'^*

сущу

длинных

 

частичных произведений

 

 

 

*

 

 

 

 

 

Тогда

 

% Y - >

«Лг- i T ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«И

e

3u*t

г

*fiY .

 

 

 

 

(4.18)