从 Integer C++ 获取 n LSB

Get n LSB from Integer C++

所以我将一个无符号整数传递到我的函数中。现在我必须获得该整数的 n 个 LSB 位并使用它来访问大小为 2^n 的数组中的一个位置。

例如,如果我的数组大小为 1024,则 n = 10。

我目前正在这样做:

unsigned int location = my_unsigned_int << n;

然而,这不起作用,因为 location 最终变得太大并且超出范围。

你可以只屏蔽你想要的位:

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

这假设您的 int 大小至少 n+1 位。