【问题标题】:Get n LSB from Integer C++从整数 C++ 中获取 n LSB
【发布时间】:2017-02-12 18:49:13
【问题描述】:

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

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

我目前正在这样做:

unsigned int location = my_unsigned_int << n;

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

【问题讨论】:

  • 先试着在纸上做,看看你是否正确理解。为了给你一个提示,你需要屏蔽顶级位。

标签: c++ bit-shift significant-digits


【解决方案1】:

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

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

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

【讨论】:

  • 我认为你的意思只是一个&amp;,因为&amp;&amp; 不是按位的
  • 它给了我一个错误“在 内的 '-' 周围建议括号
猜你喜欢
  • 2011-12-08
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-12-11
  • 2014-06-11
  • 2017-09-03
  • 2010-10-19
  • 1970-01-01
相关资源
最近更新 更多