Битовые операции

Командной оболочкой поддерживается класс операторов, которые манипулируют числами не совсем обычным способом. Эти операторы действуют на уровне битов. Они применяются для выполнения некоторых низкоуровневых операций, часто связанных с установкой или чтением битовых флагов. Описание битовых операторов приводится в табл. 34.4.

Таблица 34.4. Битовые операторы

Оператор

Описание

~

Поразрядное отрицание. Изменяет значения всех битов в числе на противоположные

<<

Поразрядный сдвиг влево. Сдвигает все биты в числе на один разряд влево

>>

Поразрядный сдвиг вправо. Сдвигает все биты в числе на один разряд вправо

&

Поразрядная операция И (AND). Выполняет операцию И над всеми битами двух чисел

|

Поразрядная операция ИЛИ (OR). Выполняет операцию ИЛИ над всеми битами двух чисел

^

Поразрядная операция ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR). Выполняет операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над всеми битами двух чисел

Обратите внимание, что для всех битовых операторов, кроме поразрядного отрицания, существуют соответствующие операторы присваивания (например, <<=).

Ниже показано, как с использованием оператора поразрядного сдвига влево вывести список степеней 2:

[me@linuxbox ~]$ for ((i=0;i<8;++i)); do echo $((1<<i)); done

1

2

4

8

16

32

64

128