bit-manipulation

Why does 0x80000000 >> 1 in JavaScript produce a negative value?

好久不见. 提交于 2020-08-19 11:59:05
问题 Doing some tests with bitwise operations / shifting with JavaScript 0x80000000 >> 1 // returns -1073741824 (-0x40000000) I would expect that to return 0x40000000 since 0x40000000 >> 1 // returns 0x20000000 0x20000000 >> 1 // returns 0x10000000 回答1: Its an arithmetic shift that's why the sign is preserved, to do a logical shift use >>> 0x80000000 >>> 1 // returns 1073741824 (0x40000000) 回答2: In Javascript, >> is the Signed Right Shift Operator . In §11.7.2 of the language specification it says