Моя дискретная математика говорит мне, что отрицание каждого бита двоичного числа эквивалентно операции XOR с 1. То есть:
~1010 === 0101
1010 XOR 111 = 0101
Но это не работает в javascript:
~123 === -124
123 ^ 1 === 122
Почему?
Моя дискретная математика говорит мне, что отрицание каждого бита двоичного числа эквивалентно операции XOR с 1. То есть:
~1010 === 0101
1010 XOR 111 = 0101
Но это не работает в javascript:
~123 === -124
123 ^ 1 === 122
Почему?
Отрицание каждого бита числа эквивалентно XOR каждого бита с 1, т. е. с числом одинакового размера, где все биты равны 1.
Для одного байта вы захотите выполнить операцию xor с двоичным числом 11111111, которое равно десятичному числу 255, а не 1. Десятичное число 1 — это двоичное число 00000001, поэтому в побитовом XOR вы инвертируете только последний бит.