Побитовые или поразрядные операторы в языке JavaScript

preview_player
Показать описание
Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

В JavaScript есть поразрядные операторы, правда используются они редко и только с целыми числами, не взирая на тот факт, что все числа в JavaScript вещественные.
При этом поразрядные операторы работают с числами в 32-ух разрядном представлении.
В JavaScript есть следующие поразрядные операторы: побитовое И, побитовое ИЛИ, поразрядное исключающее ИЛИ, поразрядное НЕ, сдвиг влево, сдвиг вправо с сохранение знака, сдвиг вправо с заполнение нулями.
Мы не будем подробно останавливаться на поразрядных операторах, а лишь посмотрим некоторые примеры и поговорим о назначении этих операторов.
Отметим несколько особенностей выполнения побитовых операций:
если дробная часть есть, то она отбрасывается;
любые биты старше 32-го отбрасываются (нумерация битов слева направо);
значение правого операнда должно быть целым числом от нуля до 31 при выполнении операций сдвига;
операция происходит следующим образом: JavaScript интерпретатор выполняет операцию над первым битом первого операнда и над первым битом второго операнда, далее над вторым битом первого операнда и над вторым битом второго операнда и т.д.;
результат всегда интерпретируется как обычное целое знаковое число.

Число ноль в двоично представлении интерпретатора JavaScript выглядит следующим образом:
0 = 00000000000000000000000000000000
1 = 00000000000000000000000000000001
2 = 00000000000000000000000000000010
Слева находятся старшие биты, а слева младшие, если старших битов нет, то они просто дополняются нулями, а каждое число в 32-ух разрядном представлении состоит ровно из 32-ух битов (нулей и единиц).
Чтобы получить отрицательное число, нужно сделать ровно две вещи: инвертировать все биты числа (0 заменить на единицы, а единицы на нули) и к получившемуся числу прибавить единицу. Посмотрим пример для двойки.
Два в двоичном виде: 00000000000000000000000000000010.
Инвертируем биты: 11111111111111111111111111111101.
Прибавляем единицу двоичным сложением: 11111111111111111111111111111101 +1=11111111111111111111111111111110.
Самый старший бит является знаковым (определяет знак): если он равен нулю, то число положительное, если он равен единице, то число отрицательное.
Рекомендации по теме