这是一个简单的问题,按照算法来讲,如果说一个整数是2的倍数,那么在二进制中,这个数就只存在一个1;所以,当这个数减一之后,和本身做与(&)运算,结果等于0,那么这个数是2的倍数;
public void count(int n){
if ((n&(n-1))==0){
System.out.println("yes");
}else {
System.out.println("no");
}
}
public static void main(String[] args) {
Times ts = new Times();
ts.count(10);
}
2.还能够换个思路,如果这个数是2的倍数,那么我们可以从2的1次方开始算,
如果能得到这个值,那么也能判断是2的倍数。
public boolean times(int n){
int m = 1;
while (m <= n){
if (m == n){
return true;
}
m = m << 1;
}
return false;
}
public static void main(String[] args) {
beishu bs = new beishu();
boolean flag = bs.times(8);
if (flag){
System.out.println("yes");
}else {
System.out.println("no");
}
}