从 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
位。
所以我将一个无符号整数传递到我的函数中。现在我必须获得该整数的 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
位。