位操作-为什么0x80000000 >>JavaScript中的1生成一个负值
bit manipulation - Why does 0x80000000 >> 1 in JavaScript produce a negative value?
使用JavaScript进行按位操作/移位的一些测试
0x80000000 >> 1 // returns -1073741824 (-0x40000000)
我希望返回0x40000000,因为
0x40000000 >> 1 // returns 0x20000000
0x20000000 >> 1 // returns 0x10000000
这是算术移位这就是为什么要保留符号的原因,要进行逻辑移位使用>>>
0x80000000 >>> 1 // returns 1073741824 (0x40000000)
在Javascript中,>>
是有符号右移操作符。在语言规范的§11.7.2中说:
在左操作数上按右操作数指定的量进行填号位右移操作。
在移位完成之前,将左操作数转换为有符号32位整数(规范中给出的算法的第5步)。在您的示例中,此转换将给定的正数转换为负值。之后,实际移动完成,保留值的负号。
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 我如何找到一个句子中的所有空格并替换忽略它们
- Javascript,访问一个主要对象模块模式中的每个对象
- 而循环只设置php中输入字段中的第一个值
- 滚动到容器中的下一个元素-几乎到了
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 打开一个模态并将其链接到AngularJS中的指令
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 要求定义另一个文件中的对象
- 使用mongodb更新中的一个变量
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 为什么画布形状只在3个画布中的最后一个画布上渲染
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 在数组中的一个元素上设置多个值
- 禁用旋转木马中的下一个按钮和上一个按钮
- 引用vue.js中v-for中的上一个值