Побитовые операторы

23-11-24 16:56:45


Image for the Побитовые операторы

В JavaScript побитовые операторы преобразуют операнды в 32-битные целые числа перед выполнением операций, а результат также является 32-битным целым числом. Эти операторы часто используются для манипуляций с флагами, выполнения эффективных вычислений и оптимизации использования памяти.

1. Побитовый AND (&)

Побитовый оператор AND сравнивает каждый соответствующий бит двух операндов. Если оба бита равны 1, результат будет 1, в противном случае — 0.

const a = 5;  // Бинарное представление: 0101
const b = 3; // Бинарное представление: 0011
const result = a & b; // Бинарное представление: 0001 (1 в десятичной системе)
console.log(result); // Вывод: 1

2. Побитовый OR (|)

Побитовый оператор OR сравнивает каждый соответствующий бит. Если хотя бы один из битов равен 1, результат будет 1, в противном случае — 0.

const a = 5;  // Бинарное представление: 0101
const b = 3; // Бинарное представление: 0011
const result = a | b; // Бинарное представление: 0111 (7 в десятичной системе)
console.log(result); // Вывод: 7

3. Побитовый XOR (^)

Побитовый оператор XOR (исключающее ИЛИ) сравнивает каждый соответствующий бит. Если биты разные, результат будет 1, в противном случае — 0.

const a = 5;  // Бинарное представление: 0101
const b = 3; // Бинарное представление: 0011
const result = a ^ b; // Бинарное представление: 0110 (6 в десятичной системе)
console.log(result); // Вывод: 6

4. Побитовый NOT (~)

Побитовый оператор NOT инвертирует каждый бит операнда. Он превращает 1 в 0, а 0 в 1. Также он добавляет 1 к результату инвертированных битов.

const a = 5;  // Бинарное представление: 0101
const result = ~a; // Инвертирует биты: 1010 (в дополнительном коде -6 в десятичной системе)
console.log(result); // Вывод: -6

5. Сдвиг влево (<<)

Оператор сдвига влево сдвигает биты числа влево на заданное количество позиций. Он добавляет 0 справа числа. Эта операция эквивалентна умножению числа на 2^n, где n — количество позиций.

const a = 5;  // Бинарное представление: 0101
const result = a << 1; // Бинарное представление: 1010 (10 в десятичной системе)
console.log(result); // Вывод: 10

6. Сдвиг вправо (>>)

Оператор сдвига вправо сдвигает биты числа вправо на заданное количество позиций. Эта операция эквивалентна делению числа на 2^n, округляя результат вниз для целых чисел.

const a = 5;  // Бинарное представление: 0101
const result = a >> 1; // Бинарное представление: 0010 (2 в десятичной системе)
console.log(result); // Вывод: 2

7. Беззнаковый сдвиг вправо (>>>)

Оператор беззнакового сдвига вправо похож на сдвиг вправо, но всегда заполняет старшие биты 0, независимо от знака числа. Это полезно для работы с беззнаковыми числами.

const a = -8;  // Бинарное представление: 11111111111111111111111111111000
const result = a >>> 2; // Бинарное представление: 00111111111111111111111111111110 (1073741822 в десятичной системе)
console.log(result); // Вывод: 1073741822