怎么巧判断一个整数是不是是2的n次方幂

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么巧判断一个整数是不是是2的n次方幂相关的知识,希望对你有一定的参考价值。

怎么巧判断一个整数是否是2的n次方幂
www.MyException.Cn 网友分享于:2013-06-16 浏览:667次

如何巧判断一个整数是否是2的n次方幂
这是我在一次天朝最牛逼的通信厂商面试时遇到的一个面试问题,下来后仔细思考,发现了比较简洁的判断方法。

1. 看到这个问题,直接的想法估计是对这个数直接判断,如果这个数是2的n次方幂,那可以将这个数先对2取模为0,再对2整除,再对2取模,一直到这个数最后为2;如果不能这样做,那么这个整数就不是2的n次方幂,代码如下:
int i = 128; //待判断的整数
int count = 1; //待判断的整数是2的count次方
while (i)

if (2 == i)

printf("YES: %d\\n",count);
break;

if (0 == i%2)

i /= 2;
count++;

else

printf("NO\\n");
break;


2. 其实还可以这样想,一个整数,若是2的n次方,有没有想过对这个整数的2进制进行考虑,比如12,它的二进制为:1100

2 10
4 100
13 1101
16 10000
32 100000
........
参考技术A 只能除以2的m次幂,m<n,根据余数判断追答

比如64,我知8是2的3次幂,所以64/8=8,因此64是2的6次幂。

参考技术B a大于b,ab小于0,则ab异号,则a>0>b①a的2n次方,即一个正数的2n次方,大于0.②b的n+1次方,即一个负数的n+1次方,可能大于0也可能小于0,因为不确定n是奇数还是偶数,就不能确定n+1是奇数还是偶数.另外:③b的2n+1次方,即一个负数的奇数次方,小于0.(判断依据:若n是正整数,则2n是偶数,2n+1是奇数.负数奇数次幂为负,偶数次幂为正.)

以上是关于怎么巧判断一个整数是不是是2的n次方幂的主要内容,如果未能解决你的问题,请参考以下文章

js 如何判断一个数字是不是2的n次方幂

2021-11-06:3的幂。给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n ==(

好玩的位运算2:用一条语句判断一个整数是不是2的整数次方

231. 2 的幂简单

231. 2 的幂简单

231. 2 的幂简单