Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Торгашев В.А. Система остаточных классов и надежность ЦВМ

.pdf
Скачиваний:
7
Добавлен:
23.10.2023
Размер:
5.18 Mб
Скачать

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

{C }^ = { ^ { ß } ^

=

{ l,6 ,0 } 82{.

Легко убедиться

в том,

что С= 76 = —8, т. е. C/N = 8/21.

Пример 1.8. Решить предыдущий пример, ие расширяя задан­

ную СОК. Положим УѴ|=рі=3; N2—P2=7- Далее представим каж­

дый из числителей

перемножаемых

дробей в

виде пары чисел

Д = Д і З + Д 2 и В В \ 7 В 2.

 

 

 

 

{Д,}уИ=

{2, 5, 1},4,

Д, =

5;

 

=

1 , 1},*.

Д2 =

1;

{Ді}лі =

1 5, 2}S4,

Д. = - 2 ;

{Да}лі =

{Д 4, 0),*,

Bs = 4.

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

 

 

{А\Ві}м — {2, 4, 2}S4,

Д,Д, =

—Ш;

{ A ß . } A f - { 2, 6, 0}84,

Д,Д2 =

20;

2Дi } = {1,5, 2}84,

Д2Д, =

- 2

и позиционные характеристики

 

{KN,

(7ІіДа)}уѴі “

{2. 2, 2}s4;

{тедг,

=

{2, 6, 3}84.

Приближенное произведение получим как результат суммиро­ вания Д,Д, и позиционных характеристик: {С}^ = {0, 5, 3}|{.

Далее вычисляем ошибку {ДД— C N }M = {2, 1, 1}а4; {Д}ж =-

- {1, 1. Н е ­ окончательный результат умножения двух дробей равен:

{С + Д}ж = {^}ж-{б}щ = {1 . 6, 0}82',

т. е. совпадает с результатом предыдущего примера.

1.6. ДЕЛЕНИЕ ДРОБНЫХ ЧИСЕЛ В СОК

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

30

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

Пусть СIN = (AIN):{B/N).

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

C=>IANIB].

(1.35)

Все способы деления дробей, представленных в СОК, можно раз­ бить на три основные группы.

Для способов первой группы характерно то, что в расширен­ ной системе остаточных классов, обеспечивающей однозначное пред­ ставление величин ЛЛ; любым из известных способов, осуществляет­ ся деление целых чисел A N : В. Следует отметить, что чаще всего в литературе рассматривается деление именно целых чисел, пред­ ставленных в СОК [3, 17]. Способы, относящиеся к этой группе, помимо значительных аппаратурных затрат, связанных с необхо­ димостью расширения исходной СОК, характеризуются относитель­ но низким быстродействием (т. е. большим числом модульных опе­ раций, необходимых для реализации деления).

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

СN .

Одни из таких способов, основанный на итеративном методе вычисления.величины [N2/B], рассматривается в работе [12]. В этом случае все вычисления можно выполнять, не расширяя исходной

СОК, причем число модульных операций, необходимых для

деле­

ния двух дробей, в

среднем

равно 12 (п + 1)

и может быть

умень­

шено почти в два

раза при

использовании

двух преобразователей

из СОК в ОПС. При делении дробей, представленных в СОК,, ука­ занный способ обладает наиболее высоким быстродействием. Од­

нако подобный алгоритм

деления

является довольно

разнородным

по своей структуре, что

приводит

к

существенному

усложнению

устройства управления.

 

 

группе, весьма

близки по

Способы, относящиеся к третьей

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

Пусть делимое A/N и делитель BIN положительны. Преобра­

зуем выражение (1.35) "следующим образом:

 

С = (AN — г)ІВ,

(1.36)

где г = [>17/]ß < ß . Тогда величина

должна удовлетворять

нера­

венству

 

 

A N — ВС

В.

(1.37)

Для решения этого неравенства можно воспользоваться следующим рекуррентным соотношением:

А (і + 1) - Д ( / ) р „ _ г- с „ _ гВ, і = 0 , 1 , 2 ........л - 1 , (1.38)

31

где А (0) = А,

а величина

 

является

решением неравенства:

 

0

А (0 Рп—і

сп—[В<С.В.

 

(1.39)

Очевидно, что

 

;,

поскольку для любых і = 0 , 1........п —1

Л; < Д*. Поэтому для

каждого } = п I неравенство (1 .с-9) можно

решить путем перебора различных значении

су от 0 (или 1) до

рj —\.

Последовательно вычисляя величины А (0), А (1 ),... ,А {п — 1),

придем к выражению

 

 

 

 

 

 

А(п) =

A N В (спрп^ і.

! - . . . +

с2р, +

с,) < В.

(1.40)

Сравнивая

неравенства

(1.37)

и (1.40),

можно

заметить, что

решения неравенств (1.39) являются символами частного С, пред­ ставленного в ОПС, т. е., вычислив величины сп, с„_і, ..... С|, мы однозначно определим искомый результат деления дробей. Посколь­ ку эти символы вычисляются последовательно, для определения С удобно воспользоваться рекуррентной формулой

 

С(г

+

1) = С ( і) д ,- і

+

 

 

1........л - 1 ,

 

 

(1.41)

где С (0) = 0;

 

С = С(п).

 

 

 

 

 

 

 

 

 

 

Так как наиболее трудоемкой частью данного алгоритма де­

ления

является

решение неравенств

(1.39),

рассмотрим

пути сокра­

щения

времени,

необходимого

для

вычисления

коэффициентов с„,

..., с,.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пусть старший ненулевой символ числа В, представленного в

ОПС,

равен blt

где І ^ п . Тогда,

положив

Кі_і=р\,

...

 

 

заме­

ним неравенство

(1.39)

на следующее выражение:

 

 

 

 

 

 

 

 

0 < [ А (і) Рп-іІКі-г] — c'n_ i b [ < b l .

 

 

 

(1.42)

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

 

 

 

 

 

 

 

 

 

 

 

 

 

[ А Р п - і І К і - і ] = ^Kt_ x(A Pn - i) <

P n - i Pi-

 

 

 

Для решения этого неравенства требуется значительно меньше

времени, чем

для

решения неравенства (1.39), так

как все опера­

ции, связанные с определением величины cn_ t ,

можно

выполнять

в сокращенной

СОК, содержащей

не более двух

оснований.

 

Конечно, в общем случае величины с'п_1 не

разны

искомым

значениям сп .і из-за ошибок

вызванных округлением чисел Арп—і

и В.

Легко убедиться

в том, что

абсолютная

величина

разности

сп_. и ся_(

не

превышает единицы. Поэтому

при

подстановке

в выражение

(1.38) величины

с'н_ 1

вместо

с„_г

получаем

резуль­

тат А' (1+1), лежащий в интервале ( — В, 2В).

 

 

 

 

 

Если сп—і =

с'п_ 1+ Др где Д( = 0, + 1,

—1,

то

Д(1 +

1) =

= Лу+і + ДіВ .

 

 

 

 

 

 

 

В

 

 

 

 

 

Поэтому,

сравнивая

величины

Л'(і'+1)

и

и

используя

нера­

венство (1.39),

можно определить

величину

и

знак

ошибки

и

соот­

ветственно определить искомые значения Л(г'+1) и

 

 

 

 

* Предполагается,

что делимое

обязательно

меньше делителя

(Л < В), так как иначе произойдет переполнение.

 

 

 

 

32

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

с п"- і

+ 1.

Тогда А (I + 1) -

А ” (і +

1) + А\В. где Д '= 0 ,1, 2.

Из

неравенства

(1.39) следует,

что при

наличии ошибок А"(І-И )

является отрицательным числом. Следовательно, отпадает необхо­ димость сравнивать значения выражения (1.38) с числом В.

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

В этом случае

величина С, получаемая

из

формулы

(1.41),

при подстановке вместо с„_і значений с' п_і отличается

от

иско­

мого частного С не более чем на единицу.

интервале

(—В, 0),

Действительно,

если А'(і)

оказывается в

что свидетельствует

о наличии

ошибки Д _і= —1,

то по

формуле

(1.41) для данного шага получается результат, завышенный на еди­ ницу: С"=С+1.

Предположим теперь, что на следующем

шаге нет ошибки.

Тогда,

поскольку е,’_ £ отрицательно,

то

 

 

 

 

С'{і + \) = Рп-іС'{і)

- \с’п_ \

=

 

 

 

= Рп-і(0 + 1) — {Рп-1 — с„_г) =

С (і +

1).

 

Аналогично исправляется ошибка и в том случае, когда

по­

падает

в интервал [Д, 2В). При этом

легко убедиться

в том,

что

значение с'п_ і оказывается равным р п—і + с„_/. Итак,

при замене

коэффициентов с„_/ на с'п_ і

частное

можно вычислять

практи­

чески с тон же

точностью.

 

 

сп_ 1

 

 

 

 

 

Для

определения коэффициентов

из

неравенства

(1.42)

можно

воспользоваться процедурой, аналогичной

делению

в дво­

ичной системе счисления, гак

как очевидно, что

 

 

 

 

 

 

с'п_і =

 

(і) Рп-іУЬі].

 

 

 

 

Рассмотрим

рекуррентное выражение

 

 

 

 

 

 

+

=

 

 

b

j - 0,1......si,

(1.43)

где nt (0) =

04 (г) Рп-іУ,

st = [Iog2 Pn+i] +

1,

i =

0, 1,.... n—1;

 

 

 

1, е сл и

* i U ) > 0;

 

 

 

 

 

—1,

если

U )

<

 

 

 

 

 

 

 

0,

если

( j )

= 0.

 

 

 

Т о г д а

c« - i “ 2 в *СУ)2*г '-

(1.44)

j = o

 

3 Заклз № 107

33

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

— 2si операций.

лд-

Для

вычисления

каждой

из

позиционных

характеристик

(Л (0 Рп-і)

требуется Z + 1

модульных

операции при усло­

вии,

что

І К іРпі <

М.

Однако

при I = п

это

условие может

и не выполняться.

Для

того чтобы в этом

случае не расширять

исходную систему оснований, воспользуемся следующим соотно­ шением:

 

ТСКВ- 1 ( л (0 Рп-і)

1(Л (0).

(1-45)

где К п_і I — Kn-'ilРп—ѵ

^ = lj 2 ,.....

 

 

 

При L=

0 это равенство становится несправедливым. Поэтому

сначала вычислим характеристику

(Д), а

затем характери­

стику тс/ся—2 (яр;| (-4) />л),

полагая эту

величину

примерно равной

ъ кп-і(.АРп)-

Тогда для

определения

позиционных

характеристик

потребуется

не

более

п

модз'льных

операций для

і = 1......п — 1

и 2п операций

для і = 0; всего для деления двух

положительных

дробей подобным способом требуется примерно п2-|-3/г-1-2] Iog2T/[ модульных операций.

Время выполнения этой операции можно существенно умень­

шить, если вычислять коэффициенты с'п_ 1 каким-либо

табличным

способом. Однако, как правило, в

этом

случае

резко

возрастают

аппаратурные затраты.

 

 

 

 

 

 

 

 

 

Если знаки делимого и делителя произвольны, то сначала

вычислим их абсолютные

величины,

выполним

деление рассмот­

ренным выше способом и присвоим

результату

необходимый

знак с помощью умножения частного на —1 (при

различных зна­

ках исходных величин). Переход к

абсолютным

величинам А и В

можно выполнять одновременно с

вычислением

 

 

(Ар,,) и Ь[,

умножая их на

—1, если

соответствующий

знак

окажется отри­

цательным.

 

 

 

 

 

 

 

 

 

 

Одновременно с частным в процессе выполнения деления вы­

числяется и остаток |/ПѴ|в, равный А(гі).

 

 

 

 

 

Пример 1.9. Пусть задана СОК с основаниями

= 4, р г = 5,

р, = 7,

р і = 3,

N = 4-5-7 =

140; М =

N-3 =

420. Вычислить част­

ное от

деления

дроби A /N =

5°/,40

на

величину

B /N =

10°/j4o-

Прежде всего определим

величину

старшего ненулевого раз­

ряда числа В, представленного в ОПС, а также позиционную

характеристику

ък ^(Арг):

 

 

{ М л

-

{[100/4-5]}«. -

{1,0,5, 2}«»,

і , - 5;

Ш м = {[50/5]}4SO =

{2, 0, 3 ,1}420,

(/1) = 10;

(АРа))м Ä

{[10• 7/4г]}4ао =

О- 2, 3, 2 } 42о > ид-5 (Ар3) ~ 17.

Теперь можно перейти к непосредственному вычислению частного, пользуясь формулами (1.43), (1.44), (1.45), (1.38), (1.41):

34

«i = [log,7] + 1 =

3,

s2 =

[log, 5] + 1 =

3, s3 =

[log, 4] + 1 = 3,

" .(!)

=

1 7 - 2 » - 5 =

- 2 3 ,

a , ( 0 ) - l ;

*0 (2) =

- 2 3

+

22-5 = - 3 ,

a0( l ) -------1;

".(3)

=

- 3

+

2-5 =

7,

u0 (2) =

— 1;

" . (4) =

7 - 5

=

2,

 

u0(3) =

1;

 

 

 

c^ =

2s — 2a — 2 +

1 = 3.

 

 

 

Следует

отметить, что

величину гс0 (4)

можно

не вычислять,

поскольку она не влияет на ход дальнейших вычислений.

(1)>ж = {50-7 — 3- 100},2о =

{2, 0,1, 2}12o,

A (1) -

50;

 

! ci\M = {3}4,o =

{3 ,3 ,3 ,

0 }420,

С'(1) =

3;

 

KKi (AIPi) = WUjpi] =

12;

c2 = 23—22— 2' +

1 = 3 ;

{/1(2)}Л1 =

{50-5 -3 .100}420=

{2,0, 6, 1}420,

A (2) =

- 5 0 ;

{c' (2)}AJ =

{3 ■5 +

3}420 ^

{0,4, 3, 0}42o},

c' (2) =

18;

KKi (AzPi) — [AtjPi\ — — 10; Cg =

— 23 + 22 +

21 =

— 2;

i A

Г

{ -

50' 4 +

2 - l°0}42o =

{°. °. °- °}42o-

A (3) = 0;

К

 

=

( 18-4 -

2)420 =

I2, 0. 0 ,1}420,

c' (3) =

70.

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

Итак:

{2, 0 ,1 ,1},{)о/{0’ 0, 2, 2}»° = (2, 0, 0,1}»°.

1.7. ВЫПОЛНЕНИЕ В СОК ДРУГИХ ОПЕРАЦИИ НЕМОДУЛЬНОГО ТИПА

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

сел из

позиционных систем

счисления

(десятичной

или двоичной) в

СОК,

а при выводе — обратное преобразование из

СОК в

позици­

онную

систему, хотя для

некоторых

управляющих ЦВМ

можно

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

классов.

немодульных операций (так же

Покажем, что любая из этих

как умножение и деление дробей)

может быть представлена в виде

некоторой последовательности модульных операций (сложения, вы­ читания, умножения) и немодульных операций вычисления пози­ ционных характеристик и расширения системы оснований.

3

35

Если целые числа (или числители дробей), представленные в СОК с основанием М = р \ ... рт, лежат в интервале (—Л’, /V), где N=MlR=p\ ... Рп, то знак произвольного числа А однозначно определяется позиционной характеристикой jtjv(A) по формуле (1.32)-.

 

 

sign (Л) = I— яуу (Л) |я.

 

 

Положив

Я ^ 4 ,

это же выражение можно использовать

для

определения

переполнения разрядной

сетки. Так, если |—Д*г(Л)|н =

= 2, то переполнение

произошло

в

отрицательную

сторону, а

при

|я.ѵ(Л )|я = 1—-в положительную.

Для вычисления

знака числа

или

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

 

Абсолютную величину числа

можно

определить при помощи

•следующего выражения: |А| =

А (1 — 2 sign (/1)).

 

 

ся

Для сравнения

чисел А

и

ß

по абсолютной

величине

требует­

определить

знак

разности

| Л | — |ß |,

выполнив 3(«+1)

модуль­

ных операций (либо 2(п+1), если величины |А|

и )ß | могут вы­

числяться одновременно} ■

 

 

 

 

 

 

 

Перейдем теперь к рассмотрению вопроса о переводе целых и

дробных чисел

из

обычных

позиционных

систем

счисления

в СОК

и обратно.

 

 

 

 

в позиционной

системе счисления

 

Пусть целое число Л задано

с основанием р:

 

 

 

 

 

 

 

 

 

■ А =

 

+•■■-(- алр + в<>>

 

где

0

— 1; і = 0,

1,... ,k — 1

и выполняется

условие

p k < М.

 

 

 

 

 

 

 

 

Тогда для перевода числа А в СОК требуется выполнить k—1 модульную операцию, вычисляя (А}м по следующей формуле:

{А )м = {а°Ь і +

{а'Р)м +

‘ ' ' +

 

Обратный перевод целых

чисел из

СОК

в позиционную систему

счисления значительно сложнее.

 

СОК, равен основанию

Пусть один из модулей, входящий в

позиционной системы. Тогда все коэффициенты а0, ..., а^_і можно найти путем последовательного деления числа {А}м на основа­ ние р.

Если Д (у + 1) =

(у')/р], где у =

0,1,..., А — 1

и Л (0) =

Л, то

aj = IА U)lp.

 

 

 

 

Для вычисления

каждого символа

а0, .... а/с_і

требуется

опре­

делить позиционную характеристику в заданной СОК с основанием М. Поэтому для перевода числа {А}лг из СОК в позиционную си­ стему требуется выполнить (k—1 )п модульных операций. Если ос­ нование р не входит в состав данной СОК, то ее придется расши­ рить, добавляя этот модуль.

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

этой дроби

через

Л,, а числитель

равной

ей

дроби, представленной

в СОК, — через А-,. Тогда

A J p k =

A ^ N

и,

следовательно, А.г =

= [A1N jp k],

где

N > p k.

 

 

 

 

36

Выразив Ал через символы позиционной системы, получим выражение для определения {Д2} )(:

U ) м ■

-IT ]

+

ak—2

1 N

+

L Рг

 

N

Г ЛП

(1.46)

+

аі пк—1

 

+ ао

РкJ

 

 

 

 

М

Поскольку величины вида Njp' являются константами, то для представления дроби в СОК требуется выполнить k—1 модульных

операций.

Однако за счет

округления

константы вычисляются с

определенной погрешностью.

Поэтому

значение А2, полученное по>

формуле

(1.46), иногда отличается от

искомого числителя дроби,,

пршем ошибка может достигнуть величины 0,5(р—1)й. В тех слу­ чаях, когда диапазон представления входных величин намного меньше N (а именно такая ситуация характерна для большинства ЦВМ, использующих представление чисел с фиксированной запя­ той), величиной ошибки можно пренебречь.

В остальных случаях следует

ввести поправку, определяемую

из следующей формулы:

 

 

яд—lik—1 + A7t/2

а о7о + аі7і +

• • •

+

где

 

 

I - 0 ......Л - 1 ;

7г = I [ N N J p k- ‘) Ij^,

Nj — произведение некоторых

модулей заданной СОК, таких, что

к {р — 1) < JV, < M ß p .

 

 

 

Если число этих модулей равно п\, то для коррекции перво­ начально полученной дроби потребуется к+п\ модульных операций.

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

вода правильных дробей

из одной позиционной

системы

счисления

в другую. Предположим,

что М ^ р М (если это

условие

не выпол­

няется, то придется расширить исходную систему оснований). Тогда

символы числителя позиционной дроби А\/рк можно

вычислить по

рекуррентным формулам:

 

 

 

 

 

 

 

 

 

А

Р

 

Г

Л

(0 р

А

U +

1) = А

(0 Р —

N

 

N ; а/г-і = I

 

N

где і =

1, 2......k',

Аг (1) = Аг.

 

 

 

 

 

 

В целом

процесс перевода потребует nk модульных операций.

Пример

1.10. Перевести десятичную

дробь

Д,/102 = 0,78

в систему остаточных классов с основаниями

ш = 3,

р» = 5, р г= 7.

р 4 = П, N = 105 и М = 1155.

 

 

 

 

 

 

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

Д7, = 5-7 =

= 35:

 

 

 

 

 

 

 

 

7. = 17.

[Nlp*] = 1;

[ N lp ] - 1 0 ;

7о =

1[105-35/100] f3i =

1;

 

 

 

 

j

g

I ly 7

1 27

 

 

Тогда

As = 8-1 +

7.10 = 78; Д =

 

g-g'---------= 4; {А + Д}лі=

( 82}ш 5= I 1-

2, 5, 4}11051 55*

 

 

 

 

 

 

37

Пример 1.11. Перевести дробь {1, 2, 5, 4}}^5> представленную

втой же СОК, в десятичную систему счисления.

Вданном случае можно не расширять заданную СОК, поскольку

ЮN <

М.

При этом а, = [82-10/105] = 7; А г (2) = 82-10 — 7-105 =-

= 85;

й0=

[85-10/105] = 8. Итак, И, = 0,78.

1.8. ОСНОВНЫЕ РЕЗУЛЬТАТЫ

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

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

Основными операциями, выполняемыми в системе остаточных классов (кроме модульных), являются вычисление позиционных ха­ рактеристик и расширение системы оснований. К ним сводятся лю­

бые

другие немодульные операции, и

от времени, затрачиваемого

на

их выполнение, существенно зависит

общая производительность

ЦВМ. Мы рассмотрели способы выполнения этих операций для си­ стем остаточных классов с любыми основаниями (не обязательно взаимно простыми). Поэтому хотя при анализе методов выполнения немодульных арифметических операций предполагалось (для про­ стоты изложения), что основания СОК являются взаимно просты­ ми, все алгоритмы полностью сохраняются и в том случае, когда модули не являются взаимно простыми.

Время, необходимое для выполнения любых немодульных опе­ раций, пропорционально числу тех модулей, которые определяют знаменатель дроби. Поэтому, переходя к вычислениям с меньшей точностью (к меньшим знаменателям), можно повысить скорость вычислений. Выше эта скорость определялась через число модуль­ ных операций. Однако в тех случаях, когда производительность ЦВМ является менее важной характеристикой, чем количество аппа­ ратуры или надежность, желательно модульные операции разло­ жить на элементарные, к которым отнесем формальное умножение, сложение и вычитание. Очевидно, что некоторые из модульных опе­ раций, рассмотренных выше, эквивалентны нескольким элементар­ ным. Например, для вычисления величины (l/pj)(A —<Zj) требуется одна модульная операция, но две элементарных.

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

і

38

 

 

 

 

 

 

 

Т а б л и ц а

1.1

Н а з в а н и е а р и ф м е т и ч е с к о й

К о л и ч е с т в о М О

К о л и ч е с т в о Э О

 

о п е р а ц и и

 

Сложение

...........................

 

 

 

 

1

1

 

Вычитание...........................

знака

числа

 

1

1

 

Определение

 

 

 

 

или наличия

 

переполне-

 

п

2 п

 

ния ...................................

 

абсолютной

 

 

Вычисление

 

п + 1

2 п + 1

 

величины ...........................

 

 

 

 

 

Сравнение

абсолютных ве-

 

 

6л +3

личин . . . .

. . . .

2

( п + 1 )

Умножение дробей

. . . .

3 (л +3)

10 (л +3)

Деление дробей .

. .

л2+3л

h2] logüA^

2+6л+4] logjATf

Перевод дробей

из

пози-

 

 

 

 

цистной

системы в СОК

 

f t — 1

2 ( f e —

1 )

Перевод дробей из

СОК в

 

nk

2 nk

 

позиционную систему .

 

 

Примечание, k — число разрядов позиционной системы; N — знаменатель дробей; п — число оснований СОК, определяющих зна­ менатель.

Г Л А В А В Т О Р А Я

КОРРЕКТИРУЮЩИЕ КОДЫ В СИСТЕМЕ ОСТАТОЧНЫХ КЛАССОВ

2.1. ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ

Рассмотрим некоторый вектор А = (а,, а2.........ат), компонен­ тами которого являются натуральные числа, удовлетворяющие

условию:

1,

где

г = 1 , 2 , . . . , /л; р х....... рт—фиксиро­

ванные натуральные числа.

различных (т. е.

отличающихся хотя бы

Очевидно, что

число

одной компонентой) векторов

такого типа

равно произведению*

•Р = Р\Рг''-Рт-

* Буквой Р обозначим также множество всех векторов подоб­ ного вида, т. е. А еР. Таким образом, в зависимости от контекста под символом Р понимается либо множество векторов А, либо число элементов этого множества.

39

Соседние файлы в папке книги из ГПНТБ