Оптимизирующий компилятор может заменить (x * 1024) на (x << 10).
Но если ты умножаешь не на константу, то компилятор будет вынужден оставить (x * y). А дальше уже дело процессора выполнить умножение так быстро, как он может. Скорее всего, это будет медленнее, чем сдвиг (хотя, разумеется, зависит от процессора и от разрядности операндов).
Здравствуйте, Shady, Вы писали:
S>Здравствуйте, shem, Вы писали:
S>Сдвиг быстрее. Почитай инфу через гугл если хочешь детальнее разобраться, это страрый трюк.
Здравствуйте, shem, Вы писали:
S>Здравствуйте, Quintanar, Вы писали:
Q>>Здравствуйте, shem, Вы писали:
S>>>
S>>>int a,b,c;
S>>>a = 1024;//допустим 1024, хотя ето не важно
S>>>b = 4;//или любая степень двойки
S>>>//Что быстрее работает?
S>>>c = a*b;//это
S>>>с = a<<b;//или это
S>>>
S>>>шем
Q>>Эти две команды делают разные вещи, так что вопрос что быстрее довольно странный. Или имелось ввиду c = a<<2?
S>а разве S>c = a << b;//(b == 4) = true S>не эквивалентна S>c = a<<2; S>c = c<<2; S>?