Битовый сдвиг для умножения целого числа на 10

Простой вопрос, но я не могу его понять:

Если у меня есть целое число, скажем, 12, и я выполняю над ним следующие битовые манипуляции:

int я = 12;
я = (я << 3) + (я << 1);

В итоге получается 120 (12*10). Это касается любого числа.

Кто-нибудь может кратко объяснить мне, почему это работает? (Я, очевидно, упускаю что-то довольно элементарное, когда дело доходит до битового сдвига).

Спасибо

12
задан Jack Smith 25 May 2012 в 16:17
поделиться