23-11-24 16:56:45
В JavaScript побитовые операторы преобразуют операнды в 32-битные целые числа перед выполнением операций, а результат также является 32-битным целым числом. Эти операторы часто используются для манипуляций с флагами, выполнения эффективных вычислений и оптимизации использования памяти.
Побитовый оператор AND сравнивает каждый соответствующий бит двух операндов. Если оба бита равны 1, результат будет 1, в противном случае — 0.
const a = 5; // Бинарное представление: 0101
const b = 3; // Бинарное представление: 0011
const result = a & b; // Бинарное представление: 0001 (1 в десятичной системе)
console.log(result); // Вывод: 1
Побитовый оператор OR сравнивает каждый соответствующий бит. Если хотя бы один из битов равен 1, результат будет 1, в противном случае — 0.
const a = 5; // Бинарное представление: 0101
const b = 3; // Бинарное представление: 0011
const result = a | b; // Бинарное представление: 0111 (7 в десятичной системе)
console.log(result); // Вывод: 7
Побитовый оператор XOR (исключающее ИЛИ) сравнивает каждый соответствующий бит. Если биты разные, результат будет 1, в противном случае — 0.
const a = 5; // Бинарное представление: 0101
const b = 3; // Бинарное представление: 0011
const result = a ^ b; // Бинарное представление: 0110 (6 в десятичной системе)
console.log(result); // Вывод: 6
Побитовый оператор NOT инвертирует каждый бит операнда. Он превращает 1 в 0, а 0 в 1. Также он добавляет 1 к результату инвертированных битов.
const a = 5; // Бинарное представление: 0101
const result = ~a; // Инвертирует биты: 1010 (в дополнительном коде -6 в десятичной системе)
console.log(result); // Вывод: -6
Оператор сдвига влево сдвигает биты числа влево на заданное количество позиций. Он добавляет 0 справа числа. Эта операция эквивалентна умножению числа на 2^n, где n — количество позиций.
const a = 5; // Бинарное представление: 0101
const result = a << 1; // Бинарное представление: 1010 (10 в десятичной системе)
console.log(result); // Вывод: 10
Оператор сдвига вправо сдвигает биты числа вправо на заданное количество позиций. Эта операция эквивалентна делению числа на 2^n, округляя результат вниз для целых чисел.
const a = 5; // Бинарное представление: 0101
const result = a >> 1; // Бинарное представление: 0010 (2 в десятичной системе)
console.log(result); // Вывод: 2
Оператор беззнакового сдвига вправо похож на сдвиг вправо, но всегда заполняет старшие биты 0, независимо от знака числа. Это полезно для работы с беззнаковыми числами.
const a = -8; // Бинарное представление: 11111111111111111111111111111000
const result = a >>> 2; // Бинарное представление: 00111111111111111111111111111110 (1073741822 в десятичной системе)
console.log(result); // Вывод: 1073741822