如何在 JavaScript 中计算整数中的 1 位

2024-01-01

如何计算一个整数中 1 的位数。

假设你有二进制数11100000。基本上开头有 3 个布尔标志。相应的十进制表示法是224。想知道如何获取该整数并以某种方式循环它以添加它开头的 1 的数量。像这样的事情:

var int = 224
var n = 8
var i = 0
var total = 0
while (i++ < n) {
  if (int.getBitAt(i) == 1) {
    total++
  } else {
    break
  }
}

我从来没有真正处理过位,所以不确定如何以最佳方式实现这一点(即不将其转换为字符串'11100000'或其他非最佳方式。


获得这种结果的最简单方法是使用按位运算符。基本上:

var num = 224
var n = 8
var i = 0
var total = 0
while (i++ < n) {
  var mask = 1 << i
  if ( (mask & num) == (mask)) {
    total++
  }
}

基本上mask是一个变量,在某个地方为 1,在其他地方为 0,例如0001000与高位在i位置。

mask & int全部为零,如果iint的bit为0,为1则等于mask。

编辑:我在控制台上进行了一些尝试。首先,我去掉了break,然后在if语句中添加了一些括号。数字表示可能存在一些问题,导致该陈述不可能成立。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中计算整数中的 1 位 的相关文章

随机推荐