Javascript左移操作符是如何工作的
How does the Javascript left shift operator work?
我注意到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,导致数字变为负数。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 最大高度转换不;不工作,工作缓慢
- Gulp-rev:不是第一次工作,而是在第一次工作之后工作
- 在JavaScript中的类中,push和concat的工作方式有何不同
- JQuery - Ajax: encodeUriComponent不工作(EncodeUri工作)