Побитовые операторы воздействуют на операнды
как набор битов (0 и 1). Например, десятичное число 9 имеет
двоичное представление 1001. Побитовые операторы выполняют
действия на таких двоичных представлениях, но они возвращают
стандартное JavaScript численное значение.
Побитовые Логические операторы
Побитовые
логические операторы работают следующим образом:
- Операнды преобразованы в 32-битные целые числа, и выражения
строк битов (0 и 1).
- Каждый бит в первом операнде соединен с соответствующим
битом во втором операнде: первый бит к первому биту, второй
бит ко второму биту, и так далее.
- Оператор применяется к каждой паре битов, и результат
создан побитовым.
Побитовые операторы:
- Побитовый И & возвращает 1, если оба операнда 1.
- Побитовый ИЛИ | возвращает 1, если любой операнд 1.
- Исключающее побитовое ИЛИ ^ возвращает 1, если есть
1 но не оба операнда 1.
Например,
бинарное представление 9 - 1001, и бинарное представление
15 - 1111. Так, когда побитовые операторы применяются к этим
значениям, то результаты выглядят следующим образом:
- 15 & 9 возвращает 9 (1111 & 1001 = 1001)
- 15 | 9 возвращает 15 (1111 | 1001 = 1111)
- 15 ^ 9 возвращает 6 (1111 ^ 1001 = 0110)
Побитовые Операторы сдвига
Побитовые операторы сдвига:
- Сдвиг влево (<<)
- Сдвиг вправо (>>)
- Сдвиг вправо с заполнением нулями (>>>)
Операторы сдвига
присваивает два операнда: первый - количество, на которое
будет сдвинуто, и второй определяет число битовых положений,
которыми первый операнд должен быть сдвинут. Направление действия
сдвига управляется использующим оператором.
Операторы сдвига
преобразуют операнды к 32-битное целое число, и возвращают
результат того же самого типа, что и левый оператор.
Сдвиг влево (<<)
Сдвиг влево
перемещает все биты влево на количество позиций, указанных
в правой части выражения, заполняя освободившиеся позиции
нулями
Например,
9<<2 возвращает 36, потому что 1001 сдвигается на 2
бита влево и становится равным 100100, что равно в десятеричной
системе 36.
Сдвиг вправо (>>)
Сдвиг вправо
заполняет освободившиеся слева позиции значением самого левого
бита исходного значения.
Например,
9 >> 2 возвращает 2, потому что 1001 сдвигается на два
бита вправо и становится 10, что равно в десятеричной системе
2. Аналогично, -9 >> 2 возвращает -3, потому что знак
сохраняется.
Сдвиг вправо с заполнением нулями
(>>>)
Сдвиг вправо с заполнением
нулями работает аналогично сдвигу влево, только в противоположном
направлении.
Например,
19>>>2 возвращает 4, потому что 10011 сдвигается
на два бита вправо и становятся 100, что равно в десятеричной
системе 4. Для postive чисел, ноль - заполняет правый сдвиг,
и распространяющийся знак сдвигается вправо выдает тот же
самый результат.
|