Dans Javascript lorsque je le fais
var num = 1; ~ num == -2
Pourquoi ~ num n'est pas égal à 0
En binaire 1 est stocké comme 1 … donc pas 1 devrait être 0
Ou il est stocké comme 0001 donc pas 0001 serait 1110
- Comprendre les opérations bitwise dans javascript
- Javascript Math.ceil (Math.abs ()) optimisation
- Envoyer et recevoir des données binaires sur les sockets Web en version Javascript?
- Javascript Tilde & Two's complement
- Bitwise AND en Javascript avec un nombre entier de 64 bits
Je pense que je manque quelque chose … quelqu'un peut-il résoudre cela?
Recherchez le complément de Two pour les nombres binaires signés
Supposons qu'un numéro de javascript soit de 8 bits (ce qui n'est pas le cas):
puis
1 = 0000 0001b
et
~1 = 1111 1110b
Quelle est la représentation binaire de -2
0000 0010b = 2 0000 0001b = 1 0000 0000b = 0 1111 1111b = -1 1111 1110b = -2
~
Permet de basculer les bits de l'opérande pour
00000001
devient
11111110
Qui est -2
Remarque: En javascript, les chiffres sont 32 bits, mais je l'ai raccourci pour illustrer le point.
De la documentation :
Bitwise NOTANT le nombre de rendements x – (x + 1). Par exemple, ~ 5 donne -6.
La raison en est que l'utilisation d'un bitwise NOT renverse tous les bits d'une valeur. Si vous stockez la valeur de 1 dans un nombre entier signé de 8 bits, vous stockez la valeur binaire 00000001. Si vous appliquez un NOT bit à bit, vous obtenez 11111110, qui pour un nombre entier signé de 8 bits est la valeur binaire pour – 2.