所以可以用这种方法判断一个数是不2^n。
解: X<<1 看是否为0 将该数转换为二进制并且向左移一位,如果是0则是2的N次方 如 2=10 4=100 8=1000 16=10000 ... 他们向左移一位都是0 2.怎样判断一个数是奇数还是偶数 解: 这个有两种方法 (1) 直接对其做模运算,对其取余即可 (2) “X & 1==0” 来判断是否为奇偶 对其二进制数与1进行...
一直除以2,如果有发现余数不为零的话就不是2的N次方,如果除了N次以后仍然余数为0说明是2的N次方
回答:这个题目更类似是脑筋急转弯了,如楼上两位所言,用二进制表数,只有只有一个1即可
如果一个数是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。
如果无法直接判断 一个整数x是不是2的正整数次方 可以使用计算器 计算lnx/ln2 如果得到整数n x就是2的n次方 不是整数就不是
num = num / 2;}else{ return false;} } return true;}else{ return true;} } 结果如下:⽅法⼆ 通过⼆进制的⽅法可以判断⼀个数num是不是2的n次⽅幂,规律可知,只要是2的次⽅幂,必然是最⾼位为1,其余为0,当num-1时,则最⾼位是0,其余是1.按位与运算: 1&1=1 0&1=...
设A为一个无符号整数,以二进制表示 对A按位取反后以无符号整数加法加1后得到B 将A和B按位相与后得到数C 如果A和C不等则A不是2的N次方,否则是2的N次方
printf("%d\n", ret); system("pause"); return0; } 求一个数书不是2的n次方: #include<stdio.h> int main() { int num=0; scanf("%d",&num); if((value&(value- 1))==0); printf("yes\n"); else printf("no\n"); return0; ...
判断一个数是不是2的N次方 com.oracle.test;importorg.testng.annotations.Test;publicclassIsPowerTest{publicbooleanisTwoPower(intnum){return(num&(num-1))==0;}@TestvoidtestIsPower(){System.out.println(isTwoPower(9));}} 输出如下, 图片.png...