Итак, есть число, знаковое. Его надо разделить
Вариант 1: на степень двойки. Сдвигаем вправо и все. Округление, на сколько я знаю, до ближайшего целого в сторону минус бесконечности.
Вариант 2: не на степень двойки, а, скажем, на 1.6. Деление на 1.6 выполняем следующим образом:
1/1.6 = 0.625 = (1/2+1/8). Т.е. сдвигаем на один бит и прибавляем результат сдвига на 3 бита. Какое округление происходит в данном случае я даже не знаю.
А теперь вопрос: как выполнить деление по первому и второму варианту, но гарантировать округление до ближайшего целого (и для положительных, и для отрицательных)? Причем, в проекте это одно из самых узких мест, не хотелось бы накручивать сложную логику и плодить задержки.
Заранее спасибо