c++ - 从 Integer C++ 获取 n LSB

标签 c++ bit-shift significant-digits

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

关于c++ - 从 Integer C++ 获取 n LSB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42191742/

相关文章:

c++ - 如何在 C++ 中将字符串的确切内容分配给 double

c - 指针、无符号字符中的按位运算

c++ - 为什么移动超过允许的位仍然有效?

c++ - C++ 中的有效数字

matlab - Matlab中数值积分的精度

c++ - 我可以在我的代码中更改什么以使我的 Quicksort 功能正常工作? (使用结构和数组对姓氏进行排序)

c++ - 双端队列内存释放

c++ - 在 C++ 中附加两个无符号字符的位运算符

舍入到有效数字*仅* R 中数字的小数部分

c++ - 试图访问对象数组中的对象,但只保存了一个对象