У меня есть функция, которая принимает индексную переменную типа unsigned long (этот тип нельзя изменить).
void func(unsigned long index);
Мне нужно преобразовать его в битовую маску так, чтобы для индекса 0 битовая маска была 1, для битовой маски индекса 1 - 2, для 2 - 4 и т. Д.
Я сделал следующее:
mask = 1 << index;
Проблема в том, что я работаю с 16-битной архитектурой, поэтому длинные переменные без знака отображаются как 32-битные, что портит эту переменную.
(младшие 16 бит дают мне правильное значение для маски, но старшие 16 бит добавляют дополнительную информацию, которая запутывает это).
т.е.. Вместо получения: маска = 0000000000000001 (16 бит)
Я получаю: xxxxxxxxxxxxxxxx0000000000000001 (32 бита)
Есть ли другой способ вычислить эту битовую маску?
Буду признателен за помощь.
Спасибо.