Здравствуйте, 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...