Самый быстрый способ вычисления 128-битного целого числа по модулю 64-битного целого числа



у меня есть 128-битное целое число без знака A и 64-битное целое число без знака B. каков самый быстрый способ вычисления A % B - Это (64-разрядный) остаток от деления A на B?



Я хочу сделать это на языке C или ассемблере, но мне нужно ориентироваться на 32-разрядную платформу x86. Это, к сожалению, означает, что я не могу воспользоваться поддержкой компилятора для 128-битных целых чисел, а также способностью архитектуры x64 выполнять необходимую операцию в одном инструкция.



Edit:



Спасибо за ответы до сих пор. Однако мне кажется, что предлагаемые алгоритмы будут довольно медленными - не будет ли самый быстрый способ выполнить 128-битное 64-битное деление-использовать собственную поддержку процессора для 64-битного 32-битного деления? Кто-нибудь знает, есть ли способ выполнить большее разделение с точки зрения нескольких меньших подразделений?



Re: Как часто B перемены?



в первую очередь меня интересует общее решение - какой расчет вы бы выполнили, если A и B, вероятно, будут отличаться каждый раз?



однако вторая возможная ситуация заключается в том, что B не меняется так часто, как A - может быть до 200, чтобы разделить на каждый B. Как бы ваш ответ отличался в этом случае?

695   0  

Comments

    Ничего не найдено.