Я использую следующую функцию, чтобы извлечь n бит из числа.Я получил эту функцию от здесь .Для удобства я выкладываю это здесь.Я хотел бы получить биты от 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