2012-09-26 14 views
5

Eventuali duplicati:
Understanding javascript bitwise NOTche cosa è l'uso di ~~ in javascript?

ho trovato qui: front-end-interview-questions domanda basso. cosa restituirà questo codice ~~ 3.14?

Ho cercato su google ma non ho trovato nulla su questo.

+1

Oppure [Javascript Tilde & Two's complementare] (http://stackoverflow.com/questions/12337360/javascript-tilde-twos-complement) – verdesmarald

+0

** Risposta semplice **: operazione di decimali di taglio più veloce (veloce come bit per bit OPPURE) '~~ 3.14' è lo stesso di' 3.14 | 0' –

risposta

5

Restituisce 3. ~ rappresenta l'operatore NOT bit a bit in JavaScript.

Fondamentalmente ~ 3,14 è stessa ~ 3, che è ~ 011 in binario => 100 o 4 in base 10. ~ 4 o ~ 100 è 011 o 3 in base 10.

4

La tilde esegui una bitwise NOT sull'input dopo averlo convertito in un numero intero a 32 bit.

Dal MDN:

bit a bit notando un numero qualsiasi x rendimenti -(x + 1). Ad esempio, ~5 produce -6.

Nel tuo caso:

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

~ è il complemento bit a bit operatore in JavaScript (e C/C++ e altri linguaggi). Potete trovare maggiori dettagli qui: How does the bitwise complement (~) operator work?

In questo caso:

  • 3.14 viene convertito dal punto a intero flottante, in modo che diventi 3.
  • ~3 è -4 a causa della rappresentazione Two's Complement.
  • Quindi ~(-4) diventa 3.

In sostanza, ~n è pari a -n-1 per gli interi con rappresentanza complemento a due.

+1

Sono troppo lento. :) – battery