Почему JDK использует сдвиг вместо умножения / деления?

У меня следующий вопрос:

Если спросить, использовать ли сдвиг вместо умножения или деления, например, ответ будет: пусть JVM оптимизировать.

Пример: сдвиг-бит-быстрее-умножения

Теперь я смотрел на исходный код jdk, например Priority Queue , и код использует только сдвиг для обоих умножение и деление (знаковое и беззнаковое).

Принимая как должное, что сообщение в SO является правильным ответом, мне было интересно, почему в jdk они предпочитают делать это путем смещения?

Это какая-то тонкая деталь, не связанная с производительностью? Я подозреваю, что это должно иметь какое-то отношение к умножению и делению переполнения / потери значимости, но я не уверен.

У кого-нибудь есть идея? Проблемы с тонким переполнением лучше решаются с помощью сдвига? Или это дело вкуса?

7
задан Community 23 May 2017 в 11:45
поделиться