2012-09-26 25 views
5

Duplicar posible:
Understanding javascript bitwise NOT¿para qué sirve ~~ en javascript?

lo encontré aquí: front-end-interview-questions pregunta abajo. ¿Qué devolverá este código ~~ 3.14?

He buscado en google pero no he encontrado nada al respecto.

+1

O [Complemento de Javascript Tilde & Two] (http://stackoverflow.com/questions/12337360/javascript-tilde-twos-complement) – verdesmarald

+0

** Respuesta simple **: operación de decimales de recorte más rápida (tan rápido como en bit OR) '~~ 3.14' es lo mismo que' 3.14 | 0' –

Respuesta

5

Devolverá 3. ~ representa el operador NOT bit a bit en JavaScript.

Básicamente ~ 3,14 es igual que ~ 3, que es de ~ 011 en binario => 100 o 4 en base 10. ~ 4 ~ o 100 es 011 o 3 en base 10.

4

La tilde realiza una bitwise NOT en la entrada después de convertirlo en un entero de 32 bits.

Desde el MDN:

bit a bit Observando cualquier número x rendimientos -(x + 1). Por ejemplo, ~5 produce -6.

En su caso:

~~3.14 
= -((~3.14) + 1) 
= -(-(3.14 + 1) + 1) 
= -(-(3 + 1) + 1) 
= -(-4 + 1) 
= -(-3) 
= 3 
5

~ es el complemento bit a bit operador en JavaScript (y C/C++ y otros lenguajes). Puede encontrar más detalles aquí: How does the bitwise complement (~) operator work?

En este caso:

  • 3.14 se convierte desde el punto flotante a un entero, por lo que se convierte en 3.
  • ~3 es -4 debido a la representación Two's Complement.
  • Luego ~(-4) se convierte en 3.

Básicamente, ~n es igual a -n-1 para enteros con representación de complemento a dos.

+1

Soy demasiado lento. :) – battery