【问题标题】:get the value of a bit from an unsigned char从 unsigned char 中获取位的值
【发布时间】:2022-11-23 17:26:56
【问题描述】:

考虑到:价值:32 位无符号整数。

位置: 这是要从值中获取的位的索引。 (索引 0 是第一位,因此是最低值)

我想实现一个功能get_bit(值,位置)以便它从无符号整数返回位(0 或 1)的值价值在指数位置

例如 value = 5(二进制为 0101)然后 get_bit(5,0)=1 get_bit(5,1)=0 get_bit(5,2)=1

你能解释一下解决这个问题的最优化方法是什么吗?

【问题讨论】:

  • 在这个网站上,我们不解决其他人的作业。我们只会在您向我们展示您已经尝试过的方法之后帮助您 - 并且您向我们解释究竟是什么不起作用。
  • 你试过什么?为什么它不够“优化”?为什么你需要这是“最优化的方式”?

标签: c


【解决方案1】:

你可以用

(value >> pos) & 0x01;

(value >> pos)         // Shift the value pos positions to the right
               & 0x01; // Only take the first bit (lowest value)

我建议研究“位移位”(>>)和“位掩码”(&),例如here,以便更好地理解该主题。

【讨论】:

  • 你的编辑只是让答案变得更糟,因为你解释了代码在做什么(通过阅读代码很明显)而不是代码为什么这样做。如果您没有通过适当的解释使其成为正确的答案,则 OP 无法从您的答案中学到任何东西。
  • @virolino 如果您了解 c 中的位移位和位掩码,那将是显而易见的。如果你是 c 的新手,这并不明显。 OP 问初学者问题这一事实指向后者。如果代码很明显,OP 就不会问这样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多