javascript - 试图理解为什么这两个函数不等价

标签 javascript bit-shift

我正在研究 JavaScript 中的一些位移位,并试图理解为什么这两个位移位函数不等价。目的是统计一个字节中设置的位数。

// correct output
let x = 13;
for (var c = 0; x; x >>= 1) {
  c += x & 1;
}
// outputs: c === 3

还有:

//incorrect output
let y = 13;
var b = 0;

for (let i = 0; i < 4; i++) {
  y >>= 1;
  b += y & 1;
}
// outputs: b === 2

最佳答案

不正确的版本在将位添加到 b 之前删除了 y >>= 1 中初始 y 中最右边的位(因此它恰好给出了正确的结果当 y 为 12 时)。

关于javascript - 试图理解为什么这两个函数不等价,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051213/

相关文章:

javascript - 如何实现用svg动画 overflow hidden ?

javascript - 剑道图表上每个项目的多个标签

javascript - Bootstrap Modal 效果不佳

c - <<= 和 |= 的含义

javascript - 无法让 Google Analytics 自定义变量发挥作用

javascript - Google Analytics 上的高级过滤以获取引荐并将其转换为外部链接

c - 简单的分配

Java位移位结果为负数

java - 如何从数字中检索位