如何找到最高有效位位置?

How to Find Most Significant Bit Position?

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

我不想要位值,而是想要最高有效位的位置(顺便说一句,它必须是 1 而不是 0)。 例如,如果我的计算机读取 0011101110,则 msb 为 6。

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

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

好的,你需要 4 样东西:

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

    来获得该常量
  2. 一个循环,其中您 运行 通过 所有 变量中的位,使用单独的计数器变量。在循环中,您使用

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

  4. 二进制左移运算符<<

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