Re[2]: как целое число быстро разделить на 24?
От: Тимошенко Антон Валентинович Россия  
Дата: 26.01.05 15:07
Оценка:
Здравствуйте, IceLoveR, Вы писали:

ILR>Здравствуйте, Тимошенко Антон Валентинович, Вы писали:


ТАВ>>проблема: у процессора нет команды целочисленного деления (FPU тоже нет)

ТАВ>>как реализовать деление на 24, чтобы оно работало быстро (так чтобы, можно было
ТАВ>>пользоваться им внутри длинных циклов).
ТАВ>>умножение на 24 реализуется просто: a * 24 = a*(8 + 16), т.е. два сдвига:


ТАВ>>b = a << 3; // a*8

ТАВ>>res = b + (b << 1); // res = a*8 + a*16

ТАВ>>хотелось бы что нибудь подобное для операции деления на эту константу.

ILR>а в итоге деления что ты хочешь получить?

ILR>25/24 что будет?


я хочу целочисленное деление с остатком.
25/24 = 1, остаток 1
смысл — вычисление индекса в массиве (матрице), который представляет
равномерное разбиение пространства на блоки размером 24. Остаток от деления = координата точки внутри блока.
Так что нужны оба эти числа. Раньше я работал с блоком размером 16, так тут все решалось простым сдвигом (целая часть)
и маскированием младших 4 битов (остаток). Теперь нужен блок размером 24...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.