Разработка алгоритма вычисления квадратного корня

 

Вычисление квадратного корня производится путем деления исходного числа на переменный делитель [14]. Первое значение переменного делителя равно 0,01, следующие значения формируются путем приписывания пары цифр 01 к уже найденному числу.

Для нахождения результата нужно выполнить (n-2) цикла, каждый из которых может содержать три такта:

1) из значения на сумматоре вычитается содержимое переменного делителя (РгД) и определяется очередная цифра результата, которая равна инверсии знака сумматора;

2) если после выполнения вычитания сумматор меньше нуля, то нужно выполнить восстановление сумматора путем сложения его с содержимым переменного делителя;

3) производится сдвиг содержимого сумматора на один разряд влево и формируется новый переменный делитель.

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

Схема алгоритма извлечения квадратного корня в соответствии с описанным алгоритмом изображена на рис. 4.7.

 
 

Рис. 4.6. Схема алгоритма ускоренного деления

с анализом двух разрядов делителя

Рис. 4.6. Схема алгоритма ускоренного деления с анализом двух разрядов делителя (окончание)

 
 

Рис. 4.7. Схема алгоритма вычисления квадратного корня

 

Буквами yi обозначены разряды регистра результата (РгР). Начальное значение счетчика во всех алгоритмах принимается равным (n-2), где n – число разрядов исходных чисел, так как используются модифицированные коды.

Рассмотрим пример для операции вычисления квадратного корня для числа с фиксированной запятой. Извлечем квадратный корень из числа А = 0,101111 по разработанному алгоритму.

 

См = 0,101111 РгР = 0 (регистр результата)

+ 1,110000 РгД = 0,01 (переменный делитель)

I 1) См= См-РгД = 0,011111 РгР = 0,1 (так как См>0)

3) См = См← = 0,111110 РгД = 0,101

+ 1,011000

II 1) См= См-РгД = 0,010110 РгР = 0,11 (См>0)

3) См = См← = 0,101100 РгД = 0,1101

+ 1,001100

III 1) См= См-РгД = 1,111000 РгР = 0,110 (так как См<0)

+ 0,110100

2) См=См+РгД = 0,101100

3) См = См← = 1,011000 РгД = 0,11001

+ 1,001110

IV 1) См= См-РгД = 0,100110 РгР = 0,1101 (так как См>0)

3) См = См← = 1,001100 РгД = 0,110101

+ 1,001011

V 1) См= См-РгД = 0,010111 РгР = 0,11011 (так как См>0)

3) См = См← = 0,101110 РгД = 0,1101101

+ 1,0010011

VI 1) См= См-РгД = 0,010111 РгР = 0,110110 (так как См<0)

 

В циклах I, II, IV и V пропущен второй такт, потому что сумматор положителен и восстановление остатка не требуется.

 

Ответ: В = = 0,110110, что соответствует результату, полученному при извлечении корня из числа А программой «Операции».

 

В настоящей главе проанализирована часть алгоритмов реализации программных моделей операций, изучаемых в курсе «Дискретная математика». Приведены схемы алгоритмов перевода чисел из одной позиционной системы счисления в другую, а также для выполнения арифметических операций сложения (вычитания), умножения, деления и вычисления квадратного корня для двоичных чисел, в том числе и ускоренные методы умножения и деления. Таким же образом можно проектировать любые алгоритмы выполнения операций, описанных в теоретических главах 2 и 3.

 

 

МАТЕМАТИЧЕСКАЯ ЛОГИКА