Книга: Язык Си - руководство для начинающих
Поразрядные операции сдвига
Поразрядные операции сдвига
Эти операции сдвигают разряды влево или вправо. Мы снова запишем двоичные числа в явной форме, чтобы подробно показать механизм сдвига.
&& : Сдвиг влево
Эта операция сдвигает разряды левого операнда влево на число позиций, указанное правым операндом. Освобождающиеся позиции заполняются нулями, а разряды, сдвигаемые за левый предел левого операнда, теряются. Поэтому
(10001010) << 2 == 00101000
где каждый разряд сдвинулся на две позиции влево.
>> : Сдвиг вправо
Эта операция сдвигает разряды левого операнда вправо на число позиций, указанное правым операндом. Разряды, сдвигаемые за правый предел левого операнда, теряются. Для чисел типа unsigned позиции, освобождающиеся слева, заполняются нулями. Для чисел со знаком результат зависит от типа ЭВМ. Освобождающиеся позиции могут заполняться нулями или значением знакового разряда (самого левого). Для значений без знака имеем
(10001010) >> 2 == (00100010)
где каждый разряд переместился на две позиции вправо.
Применение
Эти операции выполняют сдвиг, а также эффективное умножение и деление на степени 2:
number << n умножает number на 2 в n-й степени
number >> n делит number на 2 в n-й степени, если число неотрицательное.
Это аналогично соответствующему алгоритму для десятичной системы счисления, обеспечивающему сдвиг десятичной точки при умножении или делении на 10.
- Поразрядные операторы
- Операции
- Операции сдвига
- Поразрядные операции
- 5.17. Поразрядные операции над числами
- Поразрядные логические операции
- 4.8.3. Поразрядные операторы
- A7.8. Операторы сдвига
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- Операции с множествами узлов
- 4. Null-значения и логические операции
- 1. Операции объединения, пересечения, разности