У меня следующий вопрос:
Если спросить, использовать ли сдвиг вместо умножения или деления, например, ответ будет: пусть JVM оптимизировать.
Пример: сдвиг-бит-быстрее-умножения
Теперь я смотрел на исходный код jdk, например Priority Queue , и код использует только сдвиг для обоих умножение и деление (знаковое и беззнаковое).
Принимая как должное, что сообщение в SO является правильным ответом, мне было интересно, почему в jdk они предпочитают делать это путем смещения?
Это какая-то тонкая деталь, не связанная с производительностью? Я подозреваю, что это должно иметь какое-то отношение к умножению и делению переполнения / потери значимости, но я не уверен.
У кого-нибудь есть идея? Проблемы с тонким переполнением лучше решаются с помощью сдвига? Или это дело вкуса?