Некоторые неизвестные операторы в JavaScript


Введение в операторы Javascript

Javascript — очень популярный язык благодаря своей красоте и простоте использования. С javascript легко начать работу. Но освоить этот язык очень сложно. Например, вы не знаете всех операторов JS. А вы знаете?

Типы операторов

В Javascript существует множество типов операторов.
Согласно MDN Web Docs это:

  • Операторы присваивания
  • Операторы сравнения
  • Арифметические операторы
  • Побитовые операторы
  • Логические операторы
  • Строковые операторы
  • Условный/тернарный оператор
  • Оператор запятой
  • Унарные операторы
  • Реляционные операторы

Теперь вы знаете большинство из них, поэтому я расскажу вам о самых неизвестных операторах.

1. Двоичные операторы сдвига

Если вы когда-либо кодировали на C/C++, то, скорее всего, вы использовали или хотя бы слышали об операторах двоичного сдвига.

Двоичные операторы сдвига используются при работе с двоичной системой счисления. Возможно, именно по этой причине вы не знали о существовании этих операторов. Все

Эти операторы также существуют в Javascript. Это операторы Left Shift (<<), Sign-propagating Right Shift (>>) и Zero-fill Right Shift (>>>) в JS.

Левый сдвиг (<<)

Возьмем для примера число 212.

Javascript хранит числа в 64 битах.
Побитовые операторы используют 32 бита.
😅 Возможно, использование 32 бит — не самая лучшая идея. Поэтому будем работать с 16 битами

212 = 0000 0000 1101 0100
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь, если мы сделаем 212 << 1, то это сдвинет 11010100 влево, добавив в конце 0. Таким образом, получится 0000 0001 1010 1000, что равно 424.

console.log(212 << 1); //Prints 424
console.log(123 << 2); //It Prints 492
/* You Can Try it Now in Your Browser's Developer Console */
Вход в полноэкранный режим Выход из полноэкранного режима

Распространяющийся по знаку правый сдвиг (>>)

Работает так же, как и предыдущий, но сдвигает биты вправо.

let a = 212; // 212 = 0000 0000 1101 0100
a = a >> 1; // 0000 0000 0110 1010 [106]
console.log(a); // 106
console.log(343 >> 2); //85 works like this too.
console.log(-132 >> 2); //-33
/*it keeps the sign, for which it is called "sign-propagating"*/
Вход в полноэкранный режим Выход из полноэкранного режима

Сдвиг нулевого заполнения вправо (>>)

Это то же самое, что и Sign-propagating Right Shift, с той лишь разницей, что он также сдвигает знаковый бит. По этой причине он работает одинаково в положительных числах, но дает другой результат в отрицательных числах.

console.log(343 >>> 2); //85 works same
console.log(-132 >>> 2); //1073741791 it doesn't work same as >>
Вход в полноэкранный режим Выход из полноэкранного режима

Подробнее об этом можно прочитать в MDN Docs.

2. Бинарные побитовые операторы

Эти операторы снова используются в двоичных вычислениях. У нас есть побитовое AND (&), побитовое OR (|) и побитовое XOR (^).

Все они вычисляют биты на каждом месте заданного числа.

0000 0001 0011 0100
0000 0100 0010 1001
Вход в полноэкранный режим Выход из полноэкранного режима

Берется верхняя цифра и нижняя цифра в одном и том же месте. И вычисляется в соответствии с оператором. Они вычисляются по правилам булевой алгебры.

Like For AND (&)

0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1
Войти в полноэкранный режим Выйти из полноэкранного режима

Для OR (|)

0 | 0 = 0
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1
Войти в полноэкранный режим Выход из полноэкранного режима

Для XOR (^)

0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
Войдите в полноэкранный режим Выйти из полноэкранного режима

После этих вычислений мы получаем :

let a = 15; //1111
let b = 9; //1001
console.log(a & b); // 1111 & 1001 = 1001 (9)
console.log(a | b); // 1111 | 1001 = 1111 (15)
console.log(a ^ b); // 1111 ^ 1001 = 0110 (6)
Вход в полноэкранный режим Выйти из полноэкранного режима

3. Побитовый оператор Not

Оператор Bitwise Not (~) изменяет 1 на 0 и наоборот для любого заданного числа. Изменяет все 32 бита.

let a = 12; //1100
console.log(~a); //(-13)
/*
You Expected 1100 to be 0011 but after altering all 32 bits we get
1111 1111 ... 1111 0011
which is -13
*/
Вход в полноэкранный режим Выход из полноэкранного режима

Заключение

Все эти неизвестные операторы взяты из двоичной системы. Поэтому в данный момент это хороший повод изучить двоичную систему. Ведь двоичная система — это то, что делает возможным существование компьютеров.

Надеюсь, вам понравилась моя первая запись в блоге.

Увидимся позже.

Пока 👋

Оцените статью
Procodings.ru
Добавить комментарий