![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 43444546474849 ... 101 Несмотря на то что деление принадлежит к редко встречающимся операциям (для универсальных вычислительных машин деление составляет всего 2% от общего числа операций), проблема уменьшения времени деления все-таки актуальна. С одной стороны, даже малое уменьшение времени выполнения деления • может оказаться весьма эффективным для специализированных машин, с другой стороны, общее время, затрачиваемое на выполнение деления, столь велико, что возможно найти пути его существенного сокращения. Идея первого метода убыстрения деления состоит в том, что при образовании очередного остатка может случиться, что этот остаток будет либо слишком мал по абсолютной величине, либо слишком велик. На основе анализа величины остатка в этом случае можно будет определить не одну очередную цифру частного, а целую группу цифр. При изложении такого метода убыстрения деления будем предполагать, что делитель является нормализованным числом (т. е. в первом числовом разряде дедителя стоит единица). Рассмотрим четыре случая. 1. Остаток положителен и т его первых разрядов занимают нули. В- этом случае в частное можно записать /те - 1 нулей, сдвинуть делитель на т разрядов и вычислять очередную цифру частного. 2. Остаток отрицателен и т его первых разрядов занимают единицы. Очевидно, что несколько последо--вательно определяемых остатков будут положительны и в разряды частного, будет записана соответствую- - щая группа из единиц. Покажем, что эта группа будет состоять из (т- 1)-й единицы. Обозначим через полученный малый отрицательный остаток, а через q нормализованный делитель. Тогда новый остаток может быть выражен как == 2•?o + Ясно, что при ni-l>lRi>0. Следующий остаток R2 имеет вид . R2 = 2-Ri-q=2-RQ + q. При /те - 1 > 2 /?2 > О и т. д. Для всех i < т имеем Ri-2f-Ro + д а Ri>0, если m-l>L Отсюда /? i>0," и необходимость записи в частное группы из т-\ единицы доказана, 3. Остаток положителен и близок к q. Вычтем из /?о q. Получим величину Rq==Ro - 7 (в дополнительном или обратном коде), которая является достаточно малой по модулю отрицательной величиной. Пусть в старших разрядах Rq стоит группа из т единиц. Покажем тогда, что в частное можно записать группу из (7Я-1)-й единицы.-/?1 = 2-/?о -9 = 2-/?;+9. При /те - 1 > 1 /?1 > О и т. я- Ri = 2-/?; +q и Ri>0 при т-1> i. Последний остаток R„ = 2-Rl + q. Этот , остаток получается сдвигом R на т единиц влево и прибавлением к результату сдвига делителя. 4. Остаток отрицателен и близок по модулю к q. рбразуем /?о = /?о + В в первых т разрядах стоят нули. Поэтому в частное записывается {т - 1) нуль. Пример 2.19. Разделить (л:>2==0,1П1110010111 на (д;)2 = 0,1000001000001 по вышеописанному методу формирования групп цифр частного. Вычисления будем вести в дополнительном модифицированном коде по способу без восстановления остатка. Знак частного 0ф0 = 0. 00.11111100000111 11.0111110111111. д.,00.0111101010110 - 11.0111110111111 11.1111100010101 - 11.0001010100000 00.1000001000001 11.1001011100001 -00.1000001000001 ,00.0001100100010 00.11С0100010000 11.0111110111111 ЮОООП1000001 1111100011000 ,00.0100011001111 00.1000110011110 11.0111110111111 ,00.0000101011101 00.1010111010000 деление прекращено; остаток близок к q передача в частное группы из 4 единиц и сдвиг остатка на 5 разрядов влево остаток близок к q передача в частное группы из 2 нулей и сдвиг остатка на 3 разряда влево сдвиг остатка на один разряд влево, в частное 1 передача в частное группы из 3 нулей и сдвиг остатка на 4 разряда влево 1,111100011000. \у/2 Операция извлечения квадратного корня из данного числа не принадлежит к числу арифметических опера- ций. Однако при работе универсальных вычислительных машин эта операция встречается не так уж редко (около 1% от общего числа операций, выполняемых машиной). В большинстве современных машин извлечение корня представляет собой специальную стандартную подпрограмму, позволяющую с помощью несложного итерационного процесса вычислять значение корня. Примером итерационной формулы, пригодной для вычисления значений корня, может служить формула вида Уй = 0,5(---hyk-i), где на- чальное значение До может быть любым числом, отличным от нуля. Однако в некоторых универсальных вычислительных машинах и многих специализированных-машинах операция извлечения квадратного корня выполняется схемно. Связано это с тем, что для схемной реализации такой операции практически почти не требуется усложнение схемы машины, ибо в двоичной системе счисления логика операций извлечения квадратного корня почти совпадает с логикой операции деления.. Для пояснения сущности алгоритма вычисления значения корня предположим, что мы уже определили {т- 1) цифру в выражении корня и ищем /ге-ю цифру. Обозначим подкоренное выражение через jc = 0, jCiJCj... Очевидно, что О, У\У1-Ут-\ есть наибольшее число, квадрат которого не превосходит Пусть "т-Х--УхУ-Ут-Х? и . . • . S„ i = A:.(0,j;i32-3m-il)-Если ii)m-i>0, то очевидно, что у„=1. Если же ит-! < о» то Угп = о, преобразуем выран<ение для w i следующим образом: wx = - (О, УгУ2 - Уш-1 + 2-") = = [х-(О, УгУ2 ...Ут-1)\-2-2--0, у,У2-Ут-г--""-= Щп-1 - 2-("-)•0, у,У2 ...Ут-fil. Итак, для получения значения w необходимо написать справа от О, УгУ-Ут-! комбинацию 01, сдвинуть полученное число на.(/я-1) разряд вправо и 0 ... 43444546474849 ... 101 |