Javascript bitwise question de l'opérateur

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

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.