用最快的方法判断一个数是不是2的n次方 如何巧判断一个整数是否是2的n次方幂

作者&投稿:仍斧 (若有异议请与网页底部的电邮联系)
如果一个数是2^n,说明这个二进制里面只有一个1。 a = (10000)ba-1 = (01111)ba&(a-1) = 0。如果一个数不是2^n,说明它的二进制里含有多一个1。 a = (1xxx100)ba-1=(1xxx011)b那么 a&(a-1)就是 (1xxx000)b,而不会为0。所以可以用这种方法判断一个数是不2^n。

这个题目更类似是脑筋急转弯了,如楼上两位所言,用二进制表数,只有只有一个1即可

如何判断一个数是不是2的n次幂
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0;
因此问题可以转化为判断1后面是否跟了n个0就可以了。

n&(n-1) == 0即可

如何判断一个数是否为2的N次方~

参考:http://bbs.csdn.net/topics/370058619
如题,如何判断一个整数是否是2的N次方,我能想到的方法有两个
1.一直除2,看最后是否等于1.(最笨的方法)
2.转换成2进制,看是否是这个样子的:1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者说只有一个1.

程序本是算法应该是没问题的。
我用VC跑正常。
问题可能在于f(num/2);这个地方没有return,试着改成
return f(num/2);
===另外,还有一种快速的判定方法。如果一个数是2的幂,那么它的二进制数只有这个数的最高位是1。比如二进制1,10,100,1000.这样可以用循环+移位判断

怎样判断一个数是不是2的倍数
答:只看个位,能否判断出一个数是不是4的倍数?应该怎样判断?只看个位,是不能判断出一个数是不是4的倍数的,只能判断出这个数是不是2的倍数。因为,一位数,只有0、4、8能被4整除;两位数,也只有4的倍数能被4整除;而100=4×25;所以 判断一个数是不是4的倍数,要看其末两位数字是否为4的...

请注意题目的问题,不能混为一谈,最小的双数是0还是2?
答:在自然数范围内,最小的偶数是0。在研究奇数和偶数时要把0除外的 所以最小是2,不是0 。回答这个问题首先要明确所讨论的数的范围。在小学五年级的教材中,已经说明是在非零的自然数范围内,这样最小的偶数是2。如果在教学和考试中,首先必须明确在什么范围内,如果在自然数范围内,最小的偶数是...

如何看N位数是不是2 3 4 5 6 7 8 9 的倍数?
答:3的倍数:每位相加看是否是3的倍数 4的倍数:N的最后两位除以2,末位为奇偶就可以判断 5的倍数:末位5或者0 6的倍数:N除以2,除以2以后各位相加是否是3的倍数 7的倍数:没有好办法 8的倍数:N除2,再除2,判断末位奇偶 9的倍数:除两次3吧

怎么快速判断一个二进制数是奇数还是偶数,举例说明
答:这个二进制的最低位是1就是奇数,是0就是偶数 因为二进制的位数(由低到高)分别代表着1,2,4,8,16,32,64,128,256,512,1024.只有最低位的这个是1或0 所以二进制最低位为1时,就是奇数

说一说,同时是2,3,5的倍数的数有什么特征
答:末位是0,表示该数是10的倍数,即同时是2和5的倍数。组成整个数的所有各位数字之和是3的倍数,表示该数是3的倍数。同时满足以上二项后,就能保证该数是2,3,5的共同倍数了。2*3*5=30的倍数,小于50只有30 判断一个非零自然数是否是2的倍数的方法:这个数末位上的数字是否是偶数即个位上是0...

如何快速地找出一个数的因数?
答:找因数最简便又快的方法如下:1、列举法:将这个数的所有因数都一一列举出来。例如,如果要找出24的因数,就可以列举出1、2、3、4、6、8、12、24这几个数,它们都是24的因数。2、分解质因数法:将这个数分解成若干个质数的积,每个质数都是这个数的因数。例如,将60分解质因数得到2×2×3×5...

怎样判断一个整数是不是4的倍数?
答:最后两位为0。3. 方法三:数学运算法则。如果一个数是4的倍数,它也是2的倍数和8的倍数。因此,可以判断该数是否是2的倍数,然后再判断是否是8的倍数来间接判断是否是4的倍数。以上三种方法中,方法一和方法三是最常用和直接的判断方法。方法二只适用于数的二进制表示非常明确的情况。

一个两位数既是二的倍数又能被五整除并且有因数三一百以内有几个这样...
答:2、5的倍数的特征:10的倍数,个位上是0的数是2、5的倍数。2、3的倍数即6的倍数的特征:个位上要是偶数0、2、4、6、8的数且各个数位上的数字相加之和是3的倍数。3、5的倍数的特征:个位上是0或5的数,各个数位上的数字相加之和是3的倍数。判断一个非零自然数是否是8的倍数的方法:末尾...

自然数中只有一个偶数是质数它是二对不?一个数的因数一定比它的倍数小...
答:所有的质数都是奇数。不对 个位上是8的数都是2和5的倍数。不对 因为2.4÷2=1.2,所以2.4是2的倍数,2是2.4的因数。不对 连续三个自然数的和一定是3的倍数对对 提示:判断一个非零自然数是否是2的倍数的方法:这个数末位上的数字是否是偶数即个位上是0、2、4、6、8的数是2的倍数。...

自然数中只有一个偶数是质数它是二对不?一个数的因数一定比它的倍数小...
答:所有的质数都是奇数。不对 个位上是8的数都是2和5的倍数。不对 因为2.4÷2=1.2,所以2.4是2的倍数,2是2.4的因数。不对 连续三个自然数的和一定是3的倍数对对 提示:判断一个非零自然数是否是2的倍数的方法:这个数末位上的数字是否是偶数即个位上是0、2、4、6、8的数是2的倍数。...