сдвиг бита — получить n LSB из переполнения стека целых чисел

Так что я получаю неподписанный int, переданный в мою функцию. Теперь я должен получить n младших битов этого целого числа и использовать его для доступа к местоположению в массиве размера 2^n,

Так, например, если мой массив имеет размер 1024, n = 10.

В настоящее время я делаю это:

unsigned int location = my_unsigned_int << n;

Однако это не работает как location в конечном итоге слишком велик и выходит за пределы.

0

Решение

Вы можете просто замаскировать нужные биты:

unsigned int location = my_unsigned_int & ((1<<n) - 1);

Это предполагает, что ваш int по крайней мере n+1 биты в размере.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]