javascript - 如何使 Javascript 按位运算符的行为像 C 中一样?

标签 javascript

在 Javascript 中进行以下比较:

(0xf0000000 & 0xf0000000) == 0xf0000000

为 false,因为按位运算符将数字转换为有符号 int32。 & 的结果是负数,0xf0000000 的结果是正数

有没有办法让它像我期望的那样在 C 中运行?

最佳答案

Section 12.9.5 of Ecma 262 7.0 (ES 2016) 定义无符号右移运算符 (>>>) 以返回无符号 32 位整数。情况就是如此at least since ES 5 .

换句话说,当移位0时,您可以使用此运算符将int32值转换为uint32值。

因此,您只需将表达式更改为

(0xf0000000 & 0xf0000000) >>> 0 == 0xf0000000

产生true

关于javascript - 如何使 Javascript 按位运算符的行为像 C 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102412/

相关文章:

javascript - 如何根据给定的开始日期和期限持续时间动态设置结束日期?

Javascript 严格相等的奇怪之处

javascript - 全日历日点击返回错误日期

javascript - HelloComponent 不是 NgModule 的一部分,即使它列在入口组件中?

javascript - 如何使用 d3.select() 从 d3 获取与 "this"关键字等效的内容?

javascript - 使用 doT.js 的嵌套列表(来自嵌套数组/对象)

javascript - 将 div 放在 ace 编辑器之上

javascript - meteor JS : What is the best way to store states for a specific template instance?

JavaScript - 单击后如何从数组中获取元素

javascript - 在 Vue 和 Vue Router SPA 中,对于未找到的资源显示 404