В каких случаях логичней чтобы получить половину умножать на 1/2, а в каких делить на 2?

Есть такие микроконтроллеры, где нет аппаратного деления. Оно там реализовывается программно и работает оооочень долго. Вот прям заметно дольше. И если деление на константу идет в цикле, то в таком случае выгоднее один раз перед циклом вычислить 1/2, а затем умножать на результат деления. 1/2 тут для примера, конечно.
С подобными процами лично сталкивался и был неприятно удивлен фактом такой просадки производительности на делении.
В общем случае, даже на современных настольных процах от интел или амд операция деления выполняется дольше умножения. Счет идет на несколько процессорных тактов. Иногда это может играть роль.
Если же речь о целочисленном делении на 2, то тут эта операция заменяется сдвигом вправо на 1 бит, что работает быстрее и умножения и деления. Впрочем подобные вещи компилятор сам в состоянии сделать при включенной оптимизации.
- Вконтакте

Никогда если честно не видел, чтобы умножали на 0.5 там, где нужно поделить на 2.
В теории, если у тебя очень глупый компилятор, то умножение на 0.5 будет быстрее, чем деление на 2.
Ещё это может иметь смысл, если у тебя есть число типа int, и ты хочешь его поделить на два, и чтобы в результате получилось число типа double. Тогда умножение на 0.5 будет компактнее, чем приведение типов явно.
В общем нужно смотреть на конкретную ситуацию. А математического смысла за этим не стоит
- Вконтакте
Возможно это не от математики а от практики программирования идет. Когда работают в вещественных числах (float, double) то умножают на 0.5.
А если какой-то особый случай и надо работать с рациональными дробями вида 3/15, 7/11 то подключают тип Rational и в нем получают более точный результат базовой арифметики чем например double.