Операция СДВИГ ВЛЕВО
Поразрядная операция " сдвиг влево" ("<<") переносит каждый бит первого операнда на то количество разрядов влево, которое задано вторым операндом, освобождающиеся разряды справа заполняются нулями. Результат операции содержит сдвинутое машинное слово, а первый операнд не изменяется. В общем случае значение результата можно получить путем перевода значения машинного слова в двоичный код и выполнения над ним операции
0x764A << 3 ... 0111 0110 0100 1010 << 3 ...
1011 0010 0101 0000 ... 0xB250
Однако для программиста, как правило, это не требуется. Обычно используются частные случаи, имеющие свою, более естественную интерпретацию:
a <<= 4; // сдвиг влево на одну шестнадцатеричную цифру;
a = 1<<n; // установить 1 в n-й разряд машинного слова.
У операции сдвига влево есть еще одна интерпретация. Если рассматривать машинное слово как целое без знака, то однократный сдвиг увеличивает его значение в 2 раза, двукратный -в 4 раза, n-кратный -в n-ю степень 2. То есть операция сдвига влево равносильна умножению целого на степень 2. В таком виде, например, умножение числа на 10 можно представить так:
a*10 ... a*(8+2) ... 8*a + 2*a ... (a<< 3) + (a<< 1)