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

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