Операция СДВИГ ВПРАВО
Поразрядная операция " сдвиг вправо" (">>") переносит каждый бит первого операнда на то количество разрядов вправо, которое задано вторым операндом, Результат операции содержит сдвинутое машинное слово, а первый операнд не изменяется. В общем случае значение результата можно получить путем перевода значения машинного слова в двоичный код и выполнения над ним операции:
0x764A >> 3 ... 0111 0110 0100 1010 >> 3 ...
0000 1110 1100 1001 ... 0x0EC9
По аналогии со сдвигом влево операция сдвига вправо на n разрядов для положительного числа или беззнакового целого интерпретируется как целочисленное деление на 2 в степени n. Несколько слов следует сказать о заполнении освобождающихся старших разрядов. Оно производится таким образом, чтобы сдвиг соответствовал операции деления с учетом формы представления целого. Для беззнакового целого заполнение должно производиться нулями (ЛОГИЧЕСКИЙ СДВИГ), а для целого со знаком -сопровождаться дублированием значения старшего знакового разряда (АРИФМЕТИЧЕСКИЙ СДВИГ). В последнем случае отрицательное число при сдвиге останется отрицательным:
int n=0xFF00; n>>=4; // n=0xFFF0;
unsigned u=0xFF00; u>>=4; // u=0x0FF0;