JavaScript 程序检查给定数字是否是 2 的幂

什么是2的幂?

在计算机科学中,2的幂是2的非负整数次方,如2^0=1、2^1=2、2^2=4。在二进制中,2的幂对应于只有一个位为1,其他所有位为0的二进制数。

JavaScript中判断数字是否是2的幂的方法

方法一:使用循环

一种可行的方法是使用循环迭代。首先将给定数字除以2,然后判断余数是否等于0,如果余数不等于0,则该数字不是2的幂。如果余数等于0,则将该数字除以2,并重复该步骤,直到结果为1。

function isPowerOfTwo(num) {

if (num < 1) {

return false;

}

while (num > 1) {

if (num % 2 !== 0) {

return false;

}

num /= 2;

}

return true;

}

代码解释:

首先,使用 if 语句检查输入参数是否小于1。如果输入小于1,肯定不是2的幂,可以直接退出并返回 false。

然后,使用 while 循环来检查输入是否为2的幂。如果输入大于1,则检查余数是否为0。如果余数不为0,则输入不是2的幂,直接返回 false。如果余数为0,则将输入除以2,并继续进行循环。

最后,如果输入等于1,则返回 true,因为1是2的0次幂。

方法二:使用位运算

另一种更简单的方法是利用位运算。2的幂在二进制中只包含一个1和若干个0,所以将该数字转换为二进制数,再判断它是否只包含一个1即可。

function isPowerOfTwo(num) {

if (num < 1) {

return false;

}

return (num & (num - 1)) === 0;

}

代码解释:

首先,使用 if 语句检查输入参数是否小于1。如果输入小于1,肯定不是2的幂,可以直接退出并返回 false。

然后,使用位运算检查输入是否为2的幂。将该数字减去1,然后与自身进行按位与运算,如果结果为0,则输入是2的幂,返回 true,否则返回 false。

两种方法的比较

虽然两种方法都可以有效地判断一个数字是否是2的幂,但是在实际应用中,使用位运算的方法要更快速和高效。因为位运算是计算机底层语言的实现方式,所以运行速度更快。

总结:可以根据实际情况选择使用循环或位运算来判断一个数字是否是2的幂,但建议使用位运算更为高效。