Умножение и деление могут быть выполнены с помощью битовых операторов, например
i*2 = i<<1
i*3 = (i<<1) + i;
i*10 = (i<<3) + (i<<1)
и т. Д.
Действительно ли быстрее использовать say (i << 3) + (i << 1 )
умножить на 10, чем напрямую использовать i * 10
? Есть ли какие-то входные данные, которые нельзя умножить или разделить таким образом?