📜  PHP程序查找是否为二的幂

📅  最后修改于: 2022-05-13 01:54:11.029000             🧑  作者: Mango

PHP程序查找是否为二的幂

给定一个正整数,编写一个函数来判断它是否是 2 的幂。

例子 :

Input : n = 4
Output : Yes
22 = 4

Input : n = 7
Output : No

Input : n = 32
Output : Yes
25 = 32

1.一个简单的方法是简单地取以 2 为底的数字的对数,如果你得到一个整数,那么数字就是 2 的幂。

PHP


PHP


PHP


输出:
No
Yes

2.另一种解决方案是继续将数字除以二,即迭代地执行 n = n/2。在任何迭代中,如果 n%2 变为非零且 n 不是 1,则 n 不是 2 的幂。如果 n 变为 1,则它是 2 的幂。



PHP


输出:
No
Yes

3.两个数的所有幂都只设置了一位。所以数一数。设置位的数量,如果您得到 1,则数字是 2 的幂。请参阅以整数计算设置位以计算设置位。

4.如果我们将 2 的幂除以 1,那么在唯一设置位之后的所有未设置位都将设置;并且设置位变为未设置。

例如对于 4 ( 100) 和 16(10000),我们在减去 1 后得到以下结果
3 –> 011
15 –> 01111

因此,如果数字 n 是 2 的幂,那么 n 和 n-1 的按位 & 将为零。我们可以根据 n&(n-1) 的值说 n 是否为 2 的幂。当 n 为 0 时,表达式 n&(n-1) 将不起作用。为了处理这种情况,我们的表达式将变为 n& (!n&(n-1)) (感谢 https://www.geeksforgeeks.org/program -to-find-whether-a-no-is-power-of-two/Mohammad 用于添加此案例)。
下面是这个方法的实现。

PHP


输出:
No
Yes

请参阅有关 Program 的完整文章以了解更多详细信息是否为 2 的幂!