2016-07-13 6 views

Répondre

5

De MDN

Les opérandes de tous les opérateurs sont convertis en bitwise entiers signés 32 bits en deux format de complément.

Lorsque interprété comme un entier signé de 32 bits, la valeur 0xd41ddb80 représente le nombre -736240768. L'utilisation d'un opérateur sur ce nombre bitwise forcera dans un entier signé 32 bits:

console.log(~~0xd41ddb80) 
console.log(0xd41ddb80 & 0xffffffff) 
console.log(0xd41ddb80 | 0) 

La base-16 équivalent de -736240768 est -2be22480, et qui est ce que vous voyez.

Vous pouvez observer un comportement similaire pour tout nombre supérieur ou égal à 0x80000000.