drd*_*rez 0 javascript bit-shift bitwise-operators
我注意到Javascript有一种奇怪的行为:当我执行时,1967779 << 11我得到一个负面结果:-264955904
但是,如果我在Python解释器中运行相同的行,我会得到正确的答案:4030011392
请注意,Firefox和Chrome的Javascript控制台都返回了相同的负数,因此它必须是Javascript本身而不是引擎的问题.
为什么我在Python和Javascript之间获得不同的值?我该怎么做才能解决这个问题?Javascript左移操作符如何工作?
因为JavaScript引擎中此按位操作的返回值是带符号的32位整数,只能表示从-2147483648到2147483647的数字.
通过设置信号位(32位链中最高相关位(2 ^ 31))来控制任何整数是负还是正.如果0为正,则1为负.
因此,4030011392大于2147483647,这意味着信号位在此过程中"意外"设置为1,导致数字变为负数.