Получите n LSB из Integer C++

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

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

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

unsigned int location = my_unsigned_int << n;

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам