从无符号整数中获取位集位置
本文关键字:位置 获取 无符号整数 | 更新日期: 2023-09-27 18:07:13
我有一个来自PDF的标志,它返回4096的整数。根据这个网站转换器,我应该能够测试第13个位置,并使用下面的函数得到一个积极的结果,但它只给出了一个积极的结果,回到位置12?位置是基于0还是什么所以我需要检查(pos - 1)?
bool GetIsBitSet(int flags, int pos)
{
return (flags & (1 << pos)) != 0;
}
是的,函数中的位置参数是基于零的。这是由于测试的实现方式,本质上是通过将1左移pos
的次数(相当于乘以2 pos
的次数)来设置掩码。
1 << 0 = 1 // tests bit 1 binary: 0000 0000 0000 0001
1 << 1 = 2 // tests bit 2, binary: 0000 0000 0000 0010
1 << 2 = 4 // tests bit 3, binary: 0000 0000 0000 0100
...
1 << 12 = 4096 // tests bit 13, binary: 0001 0000 0000 0000