· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› деление на (2^n - 1)

Посл.отвђт Сообщенiе


Дата: Сен 6, 2004 16:31:42

Не подскажете, нету ли быстрого алгоритма целочисленного беззнакового деления на эту фигню?


Дата: Сен 6, 2004 18:32:37


Дата: Сен 7, 2004 18:23:24

А без умножений?


Дата: Сен 7, 2004 18:28:47

Ага, теперь ему уже и умножений не надо. Ну что ж. Реализуй сложение в цикле :)


Дата: Сен 8, 2004 00:46:23

Любопытная задача на мой взгляд.
Если только абстрогироваться от х86 и просто расмотреть различные варианты в духе Уорена.
Если рассмотреть деление X на 2^n -1 как частное от деления X\2^n + Y наблюдается любопытная рекурентость.


Дата: Окт 28, 2004 15:39:55

Вот тебе без умножений алгоритм:
Пусть даны целые числа A и B=2^n-1
Требуется найти X=A/B, что эквивалентно X*B=A.

Двоичная запись B состоит из одних единиц.

Пусть (для примера) B=1111
Пусть xyzuvw - двоичная запись X
Пусть abcdefghi - двоичная запись A

Запишем умножение X*B в столбик

___xyzuvw
_____1111
--------------
___xyzuvw
__xyzuvw
_xyzuvw
xyzuvw
----------------
abcdefghi

Отсюда можно рекурентно найти неизвестные биты w,v,u...

w=i
v=h-w
.... и т.д.

P.S. Не забудь переносы при сложении учитывать.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089