一尘不染

有关计算数字是否为2的幂的查询

algorithm

使用经典代码段:

如果(x&(x-1))== 0

如果答案是1,则它是错误的,而不是2的幂。但是,对5(不是2的幂)和4进行运算会得到:

0001 1111 0001 1111 0000 1111

那是4 1s。

在8和7上工作:

1111 1111 0111 1111

0111 1111

0是第一个,但我们有4。

对于这两种情况,在此链接(http://www.exploringbinary.com/ten-ways-to-check-if-an-integer-
is-a-power-of-two-in-c/)中,答案开始为0,并且变量数为0s / 1s。这如何回答数字是否为2的幂?


阅读 219

收藏
2020-07-28

共1个答案

一尘不染

您需要重新了解二进制文件的工作方式。5未表示为0001 1111(5位在),它表示为0000 0101(2 ^ 2 + 2 ^ 0),而4同样不是0000
1111(在4位在),而是0000 0100(2 ^ 2)。您写的数字实际上是 一元的

像往常一样,维基百科具有相当全面的概述。

2020-07-28