这是一个简单的问题,按照算法来讲,如果说一个整数是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");
}
}
本文发布于:2024-01-28 20:49:56,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170644620010196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |