console.log(0.5 | 0); // 0
console.log(-1 | 0); // -1
console.log(1 | 0); // 1
¿Por qué 0.5 | 0
devuelve cero, pero cualquier entero (incluido negativo) devuelve el entero de entrada? ¿Qué hace la tubería única ("|")?
javascript
Matrym
fuente
fuente
Respuestas:
Esto es un bit a bit o .
Como las operaciones bit a bit solo tienen sentido en enteros,
0.5
se trunca.0 | x
esx
, para cualquierax
.fuente
parseInt()
La comparación de bits es tan simple que es casi incomprensible;) Mira este "nybble"
Bitwise ORing 6 y 10 le dará 14:
¡Terriblemente confuso!
fuente
alert(true | false) //yields 1; alert(true | true) //yields 1; alert(false | true) //yields 1; alert(false | false) //yields 0
Una sola tubería es un OR inteligente .
JavaScript trunca cualquier número no entero en operaciones bit a bit, por lo que se calcula como
0|0
, que es 0.fuente
Este ejemplo te ayudará.
fuente