我使用以下函数从数字中提取n位。我从here得到了这个功能。为方便起见,我在这里发帖。我想从0到9获取位,然后在另一个语句中获取位10到15.我在1033中传递。我得到0到9位的正确值但是10到15的值不正确。我应该得到1而不是我收到1024任何建议?
unsigned createMask(unsigned a, unsigned b)
{
unsigned r = 0;
for (unsigned i = a; i <= b; i++)
r |= 1 << i;
return r;
}
现在我有了这个
unsigned short langId = 1033 ;// 10000001001
unsigned primary = createMask(0,9) & langId; //gives 9 correct
unsigned sec = createMask(10,15) & langId; //gives 1024 incorrect should be 1