Простой вопрос, но я не могу понять его:
Если у меня есть целое число, скажем, 12, и я выполняю над ним следующие битовые манипуляции:
int i = 12;
i = (i << 3) + (i << 1);
В итоге получается 120 (12*10). Это касается любого числа.
Может кто-нибудь кратко объяснить мне, почему это работает? (Я, очевидно, упускаю что-то довольно элементарное, когда дело доходит до битового сдвига).
Спасибо
i << 3
— это i*(2^3) или i*8, аi << 1
— это i*(2^1) или i*2, так что если вы добавите их, вы получите i*10. - person Mr Lister   schedule 25.05.2012>>
, а в некоторых случаях заменить&
на%
. Но побитовые операторы предназначены не для этого. - person Brian McFarland   schedule 25.05.2012