JavaScript | Двоичные побитовые операторы — efim360.ru

JavaScript | Двоичные побитовые операторы

 

Двоичные/Бинарные/Binary - это операции, которые принимают 2 числовых элемента на вход и выдают один на выходе.

Синтаксис AND - &

BitwiseANDExpression[In, Yield, Await] :

EqualityExpression[?In, ?Yield, ?Await]

BitwiseANDExpression[?In, ?Yield, ?Await] & EqualityExpression[?In, ?Yield, ?Await]

 

Синтаксис XOR - ^

BitwiseXORExpression[In, Yield, Await] :

BitwiseANDExpression[?In, ?Yield, ?Await]

BitwiseXORExpression[?In, ?Yield, ?Await] ^ BitwiseANDExpression[?In, ?Yield, ?Await]

 

Синтаксис OR - |

BitwiseORExpression[In, Yield, Await] :

BitwiseXORExpression[?In, ?Yield, ?Await]

BitwiseORExpression[?In, ?Yield, ?Await] | BitwiseXORExpression[?In, ?Yield, ?Await]

 

Примеры AND - &

Операция AND - это побитовое умножение. Это двоичная операция, а значит она принимает на вход два каких-то числа.

Допустим у нас есть два числа:

  • 12
  • 10

Так они будут выглядеть в двоичной системе счисления:

  • 1100
  • 1010
Двоичные побитовые операции - числа 12 и 10
Двоичные побитовые операции - числа 12 и 10

Теперь операция AND начинает последовательно смотреть на каждый бит (пары). Смотрит справа налево. Логическое "И" истинно только если оба бита истинны.

 

Первый шаг логического И - JavaScript
Первый шаг логического И - JavaScript

Первая пара - ноль и ноль. Результат AND вернёт 0.

 

Второй шаг логического И - JavaScript
Второй шаг логического И - JavaScript

Вторая пара - ноль и один. Результат AND вернёт 0.

 

Третий шаг логического И - JavaScript
Третий шаг логического И - JavaScript

Третья пара - один и ноль. Результат AND вернёт 0.

 

Четвёртый шаг логического И - JavaScript
Четвёртый шаг логического И - JavaScript

Четвёртая пара - один и один. Результат AND вернёт 1.

По итогу мы получим двоичное число 1000. Это 8 в десятичной системе счисления.

 

Примеры XOR - ^

Это двоичная операция, а значит она принимает на вход два каких-то числа.

Примеры OR - |

Это двоичная операция, а значит она принимает на вход два каких-то числа.

 

Семантика времени выполнения: оценка

BitwiseANDExpression : BitwiseANDExpression & EqualityExpression

1. Вернуть ? EvaluateStringOrNumericBinaryExpression(BitwiseANDExpression, &, EqualityExpression).

BitwiseXORExpression : BitwiseXORExpression ^ BitwiseANDExpression

1. Вернуть ? EvaluateStringOrNumericBinaryExpression(BitwiseXORExpression, ^, BitwiseANDExpression).

BitwiseORExpression : BitwiseORExpression | BitwiseXORExpression

1. Вернуть ? EvaluateStringOrNumericBinaryExpression(BitwiseORExpression, |, BitwiseXORExpression).

 

Информационные ссылки

Стандарт ECMAScript - Раздел "13.12 Binary Bitwise Operators" - https://tc39.es/ecma262/#sec-binary-bitwise-operators