Ответ 1
Это побитовое или.
Поскольку побитовые операции имеют смысл только для целых чисел, 0.5
усекается.
0 | x
x
, для любого x
.
console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
Почему 0.5 | 0
возвращает ноль, но любое целое число (включая отрицательное) возвращает целое число ввода? Что делает единственный канал ( "|" )?
Это побитовое или.
Поскольку побитовые операции имеют смысл только для целых чисел, 0.5
усекается.
0 | x
x
, для любого x
.
Сравнение бит настолько просто, что это почти непонятно;) Проверьте этот "nybble"
8 4 2 1
-------
0 1 1 0 = 6 (4 + 2)
1 0 1 0 = 10 (8 + 2)
=======
1 1 1 0 = 14 (8 + 4 + 2)
Побитие ORing 6 и 10 даст вам 14:
alert(6 | 10); // should show 14
Ужасно смущает!
Один канал представляет собой bit-wise ИЛИ.
Выполняет операцию ИЛИ для каждой пары бит. a OR b дает 1, если либо или b равно 1.
JavaScript усекает любые нецелые числа в побитовых операциях, поэтому он вычисляется как 0|0
, который равен 0.