gpt4 book ai didi

javascript - 位掩码:如何确定是否只设置了一位

转载 作者:可可西里 更新时间:2023-11-01 01:32:58 24 4
gpt4 key购买 nike

如果我有一个基本的位掩码...

cat = 0x1;
dog = 0x2;
chicken = 0x4;
cow = 0x8;

// OMD has a chicken and a cow
onTheFarm = 0x12;

...如何检查是否只设置了一只动物(即一位)?

onTheFarm 的值必须是 2n,但我如何以编程方式检查它(最好是在 Javascript 中)?

最佳答案

您可以使用此代码(改编自 this answer 的 JavaScript)计算在非负整数值中设置的位数:

function countSetBits(i)
{
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}

它应该比单独检查每个位更有效。但是,如果在 i 中设置了符号位,它就不起作用。

编辑(全部归功于 Pointy 的评论):

function isPowerOfTwo(i) {
return i > 0 && (i & (i-1)) === 0;
}

关于javascript - 位掩码:如何确定是否只设置了一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com