Информатика и технология программирования

       

Операция СДВИГ ВПРАВО


Поразрядная операция " сдвиг вправо" ("&#62&#62") переносит каждый бит первого операнда на то количество разрядов вправо, которое задано вторым операндом, Результат операции содержит сдвинутое машинное слово, а первый операнд не изменяется. В общем случае значение результата можно получить путем перевода значения машинного слова в двоичный код и выполнения над ним операции:


0x764A &#62&#62 3 ... 0111 0110 0100 1010 &#62&#62 3 ...
0000 1110 1100 1001 ... 0x0EC9

По аналогии со сдвигом влево операция сдвига вправо на n разрядов для положительного числа или беззнакового целого интерпретируется как целочисленное деление на 2 в степени n. Несколько слов следует сказать о заполнении освобождающихся старших разрядов. Оно производится таким образом, чтобы сдвиг соответствовал операции деления с учетом формы представления целого. Для беззнакового целого заполнение должно производиться нулями (ЛОГИЧЕСКИЙ СДВИГ), а для целого со знаком -сопровождаться дублированием значения старшего знакового разряда (АРИФМЕТИЧЕСКИЙ СДВИГ). В последнем случае отрицательное число при сдвиге останется отрицательным:


int n=0xFF00; n&#62&#62=4; // n=0xFFF0;


unsigned u=0xFF00; u&#62&#62=4; // u=0x0FF0;



Содержание раздела