c-如何找到最高有效位位置



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

我不想要比特值,而是想要最高有效比特的位置(它必须是1而不是0 btw(。例如,如果我的计算机读取0011101110,则msb为6。

编辑:我用的是老师给我的一个例子。她可能错了。我认为这个例子中的msb是7。另外,我不想为我写代码。只要解释一下我应该做什么。就像这个东西的概念一样。我不想欺骗或欺骗任何人。

新编辑:IDK这是怎么一个副本,就像给我的一个副本一样,这与我的问题完全不同。它不会回答我在这里问的任何问题。

好的,你需要4件事:

  1. sizeof运算符,它为您提供以字节为单位的变量大小。要获得比特数,只需乘以常数CHAR_BIT即可。你可以通过包含"limites.h"得到这个常数。

  2. 使用单独的计数器变量运行变量中所有位的循环。在循环中,您使用

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

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

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

相关内容

  • 没有找到相关文章