我试图解决一个问题,但我不知道这是否是一个好的解决方案。
构建一个无符号长类型的掩码,将14个最低有效位(从右侧开始)设置为1;
#include <stdio.h>
#include <stdlib.h>
unsigned long mask;
int main()
{
int i;
for(i=0;i<14;i++)
mask|=(1<<i);
printf("%li",mask);
return 0;
}
这个比较好
#include <stdio.h>
#include <stdlib.h>
unsigned long mask;
int main()
{
int num = 14;
mask = (1 << num) - 1;
printf("%lu", mask);
return 0;
}
这num
是最低有效位的总数。
这个怎么运作
2 ^ 14 = 16348的二进制表示是0000000000000000 0100000000000000
(32位)和
2 ^ 14-1 = 16347的二进制表示为 0000000000000000 0011111111111111
因此14个最低有效位设置为1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句