【问题标题】:How to Find Most Significant Bit Position? [duplicate]如何找到最高有效位位置? [复制]
【发布时间】:2018-11-28 06:29:08
【问题描述】:

我需要真正找到无符号 n 的最高有效位位置。它可以是任何输入。

我不想要位值,而是想要最高有效位的位置(它必须是 1 而不是 0)。 比如我的电脑读到0011101110,msb就是6。

编辑:我使用的是老师给出的示例。她可能错了。我认为该示例中的 msb 为 7。 另外,我不想要为我编写的代码。只是解释我应该怎么做。喜欢事物的概念。我不想欺骗或嘲笑任何人。

新编辑:IDK 这是如何重复的,因为给我的那个是重复的,这与我的问题完全不同。它不会回答我在这里问的任何问题。

【问题讨论】:

  • 请告诉我们你到目前为止所做的尝试!!没人想写你的软件。
  • 你的例子没有意义,至少对我来说是这样。
  • "... 0011101110, msb 是 6" 怎么样?
  • 我不想让任何人写我的代码。我只想知道如何找到 msb 位置。只是一个解释。我不想要为我编写的代码。
  • 这是我们老师给的例子。逐字逐句地表示“例如:0011101110。msb 为 6。以此作为测试的一种方式。”个人认为是7。从右到左数,从0开始,实际上可能是7。

标签: c position bit


【解决方案1】:

好的,你需要 4 样东西:

  1. sizeof 运算符,以字节 为单位提供变量大小。要获得 的数量,您只需乘以常数 CHAR_BIT。您可以通过包含“limits.h”来获得该常量。

  2. 一个循环,您可以使用单独的计数器变量遍历变量中的所有位。在循环内部,您使用

  3. 二进制 'and' & 来测试你的变量对 1 的值,你在循环内使用 2 的幂不断增加

  4. 二元左移运算符

在循环中检查二进制“and”是否为“1”;如果是,则该位已设置,您可以 increment 为循环计数器设置另一个变量,这将是您的返回值。

【讨论】:

  • 很抱歉,我无法支持您的评论。它不会显示我是新来的,所以我的投票没有显示。但是你的解释真的很有帮助。谢谢!这就是我想要的。理解这个概念会让我弄清楚如何处理其他问题,而不仅仅是这个,你知道吗?谢谢!
  • 不客气。如果您从老师那里得到的指导很少,那可能会令人沮丧,而且我想英语也不是您的第一语言...如果我的回答对您有用,即使声誉低下,您也可以接受。
  • 不,英语是我的第一语言。编程不是大声笑。
  • UPS...对不起。我不太习惯年轻人写英语的方式。 ;) 顺便说一句,如果您无法理解这些二进制操作的真正作用(&),我可以编辑我的答案以显示一个小图。
  • 没有。没关系。这对我有足够的帮助! :)
猜你喜欢
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
相关资源
最近更新 更多