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