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

Книги / Книга Проектирование ВПОВС (часть 2)

.pdf
Скачиваний:
88
Добавлен:
01.06.2015
Размер:
4.62 Mб
Скачать

Так как прямое вычисление f(L(N)) затруднительно, то будем искать значение y как корень уравнения F(y, L(N)). Организуем следующий итерационный процесс [7]:

y

n 1

 

 

 

y

n

 

F x, y

n

F x, y

n

 

 

.

(4.27)

Последовательность yn+1 сходится к y, если выполняется условие

Липшица с константой q

 

| F(x, yn) – F(x, yn+1) | q | yn+1 – yn |.

(4.28)

Тогда начальное приближение следует выбирать из окрестности, где

| F (x, y0)| q < 1.

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

Тогда вначале ищется приближение y для x = x1, где x1 – старшая группа.

Если yn 1 yn , то условно можно считать, что yn 1 yn . В этом случае переходим на следующий этап операции, увеличивая разрядность x = x1 + x2,

где x2 – следующая группа разрядов. Тогда имеем

y

n 2

 

y

n

 

F (x1 F ' (x1

x2 ), y2

x2 ), y2

.

Откуда

 

 

 

 

 

F (x1 x2 ), yn

 

 

 

 

yn 2

yn 1

 

 

 

x2

 

x

 

 

 

), y

 

 

 

 

 

2

F ' (x x

2

n

 

.

 

 

 

 

1

 

 

 

 

 

yn 2 yn 1

yn 2

 

 

 

 

 

 

 

Далее процесс продолжается по схеме (4.27) до тех пор, пока не выполнится условие (4.28). Если условие выполняется, то входной аргумент увеличивается на следующую группу и так до окончания поля.

251

4.2.1. Вычисление обратной величины

Пусть задана функция y = 1/x. Будем рассматривать х как

положительную величину, а знак – присваивать результату. В соответствии с

 

 

 

 

2

формулой (4.27) будем иметь F(x, y) = 1 – x / y и F

(x, y) = 1 / y .

 

 

Таким образом, получаем итерационную формулу для определения

y = 1/

x

:

 

 

 

 

 

 

 

yj +1 = yj (2 – xyj).

 

(4.29)

 

Так как х представляется полем, то итерационный процесс начинается со

старшей группы, т.е. вначале ищется yj +1 = yj (2 – xK yj), где xK – k = 1, 2 , …, N. Как только итерационный процесс сошелся для текущей группы, то

берется следующая группа и уточняется решение

y

 

x

 

 

y

2

,

 

j

k 1

j

 

 

 

 

 

 

 

 

y

 

y

 

 

y

 

 

.

j 1

j 1

j 1

 

 

 

 

 

 

.

Далее решение уточняется для поля содержащего ( k + 1) группу:

y

 

y

 

2 x

 

j 2

j 1

k 1

 

 

 

Указанные процессы продолжаются до точности:

y

 

 

 

j 1 .

завершения поля и требуемой

(2 xy

 

)

1 R

 

 

n .

Выбор начального значения

[1]

существенно влияет на сходимость.

Условием сходимости является – 1 < (1 – xy0) < 1. Так как поле представляется в формате с плавающей запятой, то условие сходимости записывается в форме

– 1 < (1 – xM y0) < 1.

Так как все операции ведутся над группой, то и y0 представляется группой. В качестве начального значения можно взять y0 = 1/x0, где x0

значение 3-х или 4-х старших разрядов х. Величина y0 может быть вычислена заранее и хранится в памяти. Значения y0 для 4-х разрядов приведены в табл.4.5.

252

Таблица 4.5

x0

y0

 

 

1.0000

1.0000 (0.0000)

 

 

1.1000

0.(1010)

 

 

1.1001

0.(1010 0011 1101 01110000)

 

 

1.1010

0.(1001 1101 1000 )

 

 

1.1011

0.(1110 0011 1000)

 

 

1.1100

0.(1001 0010 0100)

 

 

1.1101

0.(1000 1101 0011 1101 1100 1011 0000)

 

 

1.1110

0.(1000)

 

 

1.1111

0.(1000 0100 0010 0001 0000)

 

 

Здесь, как и в табл. 4.2, скобка указывает на период повторения, т.е.

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

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

Y(0 p) Y0

Y3 p

,

 

Y

 

p

 

3

Y

где

p

k (x*x ) – экстраполированное на p-шагов приращение искомой

 

 

 

k 1

переменной. Учитывая, что

Y1 Y0 (1 xy0 )

Y2 Y0 (1 xy0 )2 (1 (1 xy0 )2 )Y3 Y0 (1 xy0 )4 (1 (1 xy0 )3 )

...................................................... (4.30)Yp Y0 (1 xy0 )2( p 1) (1 (1 xy0 )2p 1 1 )

Тогда

253

 

 

 

p

 

 

 

 

 

k 1

 

 

 

( k 1)

 

 

 

 

Y

3

Y

 

 

xy

 

 

2

*(1 (1 xy

 

 

1

 

 

 

 

(1

 

)

 

 

)

2

).

 

(4.31)

 

 

 

 

 

 

 

 

 

p

0

 

 

0

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2

p

Погрешность на шаге итерации в этом случае равна

, т.е. за шаг

 

 

 

 

формируется не

менее

2-p

верных

разряда. Учитывая, что начальное

приближение обратной величины имеет не менее двух верных разрядов и при числе разрядов группы поля n = 16 формула для определения величины P

 

 

( p 1)

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 2

2

2

). Откуда получаем P + 1 = Y, т.е. P = 3.

 

 

 

 

 

 

 

 

 

 

 

 

При определении следующих групп поля результата достаточно одной

итерации, т.е. P = 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом, общий алгоритм определения обратной величины имеет

вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y

3

Y

(Z

 

 

Z

2

* (1 Z

 

2

) Z

 

4

(1 Z

3

));

 

 

 

 

 

 

 

 

1

 

1

1

 

1

1

 

 

 

 

 

 

 

Y

 

 

i1

 

 

 

0

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

Y Y

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

0

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Z

 

 

(1 Z

 

3

);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y Y

*

Y

*

X

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

(4.32)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y Y

1)

* (1 X

Y

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y

 

 

 

i

 

 

 

 

(i

 

 

 

 

 

 

 

 

 

 

i

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

Y Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

i

 

 

Y

 

i

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y

 

 

 

 

Y

*

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

i 1

 

 

 

 

 

 

i 1

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i = 2, 3, …., N3 ; N – число групп поля.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь использованы следующие обозначения:

 

 

 

 

 

Xi – поле содержащее i-групп,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi = Xi - Xi-1 – последняя i-группа поля Xi,

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

F(x1 y) y2 x,

 

 

 

 

Вычисление

 

 

функции

 

 

 

 

x .

Положим

 

тогда

F

'

(x y) 2 y

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y

 

 

1

(

X

Y )

.

 

 

 

(4.33)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1

 

2

 

 

Yi

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

254

 

 

 

 

 

 

 

 

 

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

 

X

'

 

Z (

 

1),

Y

2

 

 

 

 

 

 

i

 

 

соответственно

Y

 

1

Y * Z

 

 

 

i .

(4.34)

i 1

 

2

i

 

 

 

 

 

Как и в предыдущем случае, на начальном этапе требуется большее число итераций. В качестве начального приближения, учитывая, что данные

представляются с плавающей запятой, т. е.

X X

 

2

N

2

m

,

здесь N – число

M

 

 

 

 

 

 

 

 

сдвигов на группу, а m – число сдвигов внутри группы. Например, если N = + 1,

а m = – 7 , то это означает, что исходное число содержит в целой части группу,

но в этой группе только девять младших разрядов являются значащими.

Для определения порядка результата формируем текущий порядок числа

P ( Nn m)

,

а затем порядок результата, который

будет равен

x

 

 

 

P

Nn m

целое с избытком. Если числитель в Py нечетное число, то

 

 

 

y

 

 

 

2

 

 

 

 

порядок числа X увеличивается на +1. В

интервале 0.5 X M 2 .

 

1

 

 

Z

 

 

 

 

 

 

 

Таким образом, Y2

Y0 Z

0 , где

0

 

2

 

 

 

 

этом случае мантисса Xm лежит в

(

X

1)

 

Y

2

.

 

 

 

 

 

 

 

0

 

 

Для ускорения сходимости используем метод экстраполяции

приращений

 

 

K

r

3

2e

 

 

Y

3

Y

(

Z

)

 

0

 

 

 

r

 

R 1

e 1

 

2e

0

 

 

 

r 1

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

Y

3

Y (

 

a

r

),

 

z

 

 

 

8

 

 

0

r

0

 

 

 

 

 

 

 

 

 

 

r 7

 

 

 

 

 

 

 

a

 

 

3 2

 

 

1

 

, a

 

1

 

 

2

 

2

2

 

 

 

 

 

 

 

 

 

 

 

 

r=0

 

 

 

 

 

 

 

 

 

 

 

a

 

 

a

 

3 10

 

 

7

,

5

4

 

 

 

 

 

 

 

 

 

10

 

 

256

 

r=0

 

 

 

 

 

 

 

где а0 = 1,

a

 

3 4

 

1

, a

 

a

 

 

3 6

 

 

1

, a

 

a

 

3 8

 

5

,

1

4

 

8

3

2

6

16

4

3

 

 

 

 

 

 

 

 

 

 

 

8

128

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a6

a5

3 12

 

21

 

, a7

33

.

 

 

 

 

 

 

 

 

 

 

2048

 

 

 

 

 

 

 

 

 

 

12

 

 

 

1024

 

 

 

 

 

 

 

 

 

 

 

255

При формировании начального приближения используем 4 старших разряда XM. Соответствующие приближения приведены в табл. 4.6.

Таблица 4.6

 

XМдвоичое

XМдесятичное

Y

X

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

0,0000

 

0,0000

 

0.0001,0.0000; 0.0000

 

 

 

 

 

 

 

1,0001

 

1,0625

 

0.0001,0.0000; 0.0111

 

 

 

 

 

 

 

1,0010

 

1,1250

 

0.0001,0.0000; 0.1111

 

 

 

 

 

 

 

1,0011

 

1,1875

 

0.0001,0.0001; 0.1100

 

 

 

 

 

 

 

1,0100

 

1,2500

 

0.0001,0.0001; 0.1110

 

 

 

 

 

 

 

1,0101

 

1,3125

 

0.0001,0.0010; 0.0101

 

 

 

 

 

 

 

1,0110

 

1,3750

 

0.0001,0.0010; 0.1100

 

 

 

 

 

 

 

1,0111

 

1,4375

 

0.0001,0.0011; 0.0011

 

 

 

 

 

 

 

1,1000

 

1,5000

 

0.0001,0.0011; 0.1001

 

 

 

 

 

 

 

1,1001

 

1,5625

 

0.0001,0.0100; 0.0000

 

 

 

 

 

 

 

1,1010

 

1,6250

 

0.0001,0.0100; 0.0110

 

 

 

 

 

 

 

1,1011

 

1,6875

 

0.0001,0.0100; 0.1100

 

 

 

 

 

 

 

1,1100

 

1,7500

 

0.0001,0.0101; 0.0010

 

 

 

 

 

 

 

1,1101

 

1,8125

 

0.0001,0.0101; 0.1000

 

 

 

 

 

 

 

1,1110

 

1,8750

 

0.0001,0.0101; 0.1110

 

 

 

 

 

 

 

1,1111

 

1,9375

 

0.0001,0.0110; 0.0100

 

 

 

 

 

 

 

 

Аналогично вычисляется кубический корень и корни более высоких степеней. Вычисление обратной величины корня в некоторых случаях также оказывается полезной.

4.2.2. Вычисление обратной величины квадратного корня

Пусть задана функция

y

1

 

.

 

 

 

 

 

 

 

 

x

256

Тогда

Откуда

и

F(x y) x

1

0

.

 

 

 

 

 

2

 

 

 

 

1

y

 

 

 

 

 

 

 

 

 

 

 

 

 

'

 

 

d

(x

1

) 2y

3

F (x y)

 

 

 

2

 

y

1

dy

 

y

 

 

 

 

 

 

 

 

 

 

1

 

y

3

 

1

 

 

 

 

1

 

 

 

 

 

Y

(x

) *

n

 

(y

 

3

x)

y

 

(1 xy

2

).

 

2

 

 

 

n

y

 

n

n

n 1

 

y

 

2

 

2

 

n

 

2

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

В данном случае знак у полученного порядка меняется на противоположный.

Py

 

Nn m

целое с избытком.

 

 

 

 

2

 

Также на начальном этапе используется экстраполяция приращений для ускорения сходимости при получении первой группы поля результата.

 

 

K

K

2K

1

Y3

Y

 

(

 

 

 

)Zr

K 1

0

 

2K

0 .

 

 

r 1

r 1

 

 

 

 

 

 

Для экстраполяции на 8 шагов, что обеспечивает необходимую точность получения первой группы, имеем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y

3

Y

 

a

z

r

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

0

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

1

,

a

 

 

3

,

a

 

 

5

,

a

 

 

5 7

,

a

 

7 9

 

,

a

 

 

3 7

11

a

 

 

3 11 13

.

1

 

2

 

3

 

4

 

 

 

 

 

 

 

6

 

 

7

 

 

 

2

 

 

 

8

 

 

 

16

 

 

 

128

5

 

256

 

 

 

1024

 

 

2048

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При вычислении

y

1

x

 

используется итерационный процесс без

 

 

 

1

 

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

x x *

, вычислять

 

 

 

x

 

 

 

квадратный корень тоже без деления.

 

 

 

 

 

4.3. Операционные узлы вычислителя значений функций

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

257

не кратное размеру группы. Кроме того, возникает необходимость умножения на числа число разрядов, которых не кратны числу разрядов в группе. Всё это приводит к необходимости разработки специальных операционных узлов для вычислителя функций.

4.3.1. Двоично-кодированные системы

Для эффективной реализации операционных узлов формирования функциональных зависимостей необходимо выбрать систему счисления,

которая позволит вести операции, начиная со старших разрядов, и обеспечит возможность организации параллельных и конвейерных вычислений. Это условие не обеспечивается широко применяемыми в практике цифровой обработки позиционных систем счисления. Опыт применения непозиционных систем счисления, таких как система в остаточных классах [32], знакоразрядная двоично-избыточная система малоэффективны в связи с ограниченными возможностями. Они позволяют эффективно реализовать операции сложения и умножения, а остальные (сравнение, логические операции и ряд других)

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

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

Для организации параллельных систем с произвольной разрядностью двоичная система счисления (ДСС) оказывается малоэффективной из-за сложности организации параллельного сумматора высокой или переменной разрядности. При увеличении разрядности обрабатываемых чисел существенно возрастает сложность системы ускорения переноса, а в случае динамически изменяемой разрядности (переменной разрядности) известные методы ускорения переноса не работают. Для параллельных систем с изменяемой разрядностью наиболее эффективны системы счисления, непосредственно связанные с двоичными системами. Это системы с запоминанием переноса и системы с опережением переноса [29]. Система с запоминанием переноса предполагает наличие двухрядного кода. Сохранение двухрядного кода в

258

системе увеличивает объем оперативной памяти (в 2 раза), так как необходимо хранить данные в двухрядном коде (перенос и сумма по модулю 2). В системе с запоминанием переноса операция умножения потребует для каждого кода одного числа наличие двух устройств умножения. Кроме того, для выполнения логических операций необходимо преобразование двухрядного кода в двоичный код. Все это усложняет построение операционных узлов, в связи, с

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

4.3.2. Организация представления данных и выполнение основных операций в коде «опережающий перенос»

Система с опережением переноса [7] строится следующим образом.

Исходное число разрядностью n разбивается на группы разрядностью m (m<<n), число групп равно l = n / m ( n = l * m ). Если l не целое, то справа или слева в зависимости от формы представления (дробное или целое) добавляются нули. Каждая группа снабжается дополнительным разрядом. Тогда число Х =

0.11.01.11.01.01 (n=10, m=4) представляется в виде:

Х = 0 . 1101 . 0 . 1101 . 0 . 0100.

Эти дополнительные разряды служат для того, чтобы перенос не пробегал через все поле от точки возникновения до начала числа.

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

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

259

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

4.3.2.1. Организация основных операций в коде «опережающий перенос»

При выполнении операции суммирования [7] операция в каждой группе выполняется независимо. Чтобы исключить пробег переноса, в каждой группе добавляется дополнительный разряд. При выполнении операции алгебраического сложения в младший разряд старшей группы прибавляется 1 (предваряя перенос из младшей группы), чтобы операция в целом выполнялась правильно, в дополнительный разряд младшей группы прибавляется 1 со знаком минус и тем же весом, что и перенос в старшую группу. Тогда при возникновении переноса из младшей группе минус единица в ее дополнительном разряде уничтожается, а при его отсутствии сохраняется.

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

на суммирование поля отводится два такта. На первом такте формируется промежуточная сумма, на втором – за счёт коррекции определяется окончательный результат в коде "опережающий перенос". При этом вычитание заменяется сложением с дополнением дополнительного разряда.

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

При формировании дополнения группы, дополнительный разряд рассматривается как знаковый. Каждая группа рассматривается как отдельное число, и формируется дополнительный код каждой группы по правилам формирования дополнительного кода двоичного числа. Дополнительный разряд рассматривается как знаковый.

260