Побитовый оператор XOR в JavaScript - PullRequest
8 голосов
/ 31 марта 2012

Почему это:

console.log("1100" ^ "0001")
=> 1101 // as expected

console.log("1100" ^ "1001")
=> 1957 // ???

Пожалуйста, объясните. Спасибо.

1 Ответ

11 голосов
/ 31 марта 2012

Эти числа интерпретируются как десятичные числа.

Попробуйте:

console.log(parseInt("1100", 2) ^ parseInt("1001", 2))

Конечно, ответ (0101) печатается в десятичном виде (5).

Грамматика токенов JavaScript поддерживает числа в десятичном, восьмеричном и шестнадцатеричном виде, но не в двоичном виде.Таким образом:

console.log(0xC0 ^ 0x09)

Кстати, первый сработал, потому что 1100 (десятичное) это 1101 (десятичное) после xor с 1.

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