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