Ответ Эндрю Тулуза может быть расширен до деления.
Деление по целочисленным константам подробно рассматривается в книге «Хакерское наслаждение» Генри С. Уоррена ( ISBN 9780201914658).
Первой идеей реализации деления является запись обратного значения знаменателя в базе два.
Например, 1/3 = (base-2) 0.0101 0101 0101 0101 0101 0101 0101 0101 .....
So , a/3 = (a >> 2) + (a >> 4) + (a >> 6) + ... + (a >> 30)
для 32-битной арифметики.
Объединяя термины очевидным образом, мы можем уменьшить количество операций:
b = (a >> 2) + (a >> 4)
b += (b >> 4)
b += (b >> 8)
b += (b >> 16)
Есть более интересные способы вычисления деления и остатков.
EDIT1:
Если OP означает умножение и деление произвольных чисел, а не деление на постоянное число, то этот поток может быть полезен: https://stackoverflow.com/a/12699549/1182653
EDIT2:
Один из самых быстрых способов разделить на целочисленные константы - использовать модульную арифметику и сокращение Монтгомери: Что такое t он самый быстрый способ разделить целое на 3?