黑马程序员技术交流社区
标题:
不用算术运算符,如何判定一个数是否是二的幂?
[打印本页]
作者:
路文龙
时间:
2015-3-7 15:49
标题:
不用算术运算符,如何判定一个数是否是二的幂?
本帖最后由 路文龙 于 2015-3-8 17:12 编辑
我实现了用取模和除运算符检查一个数是不是二的幂,但是不用运算符怎么实现?用位运算么?
取模和除运算实现:
public class two {
public static boolean judge(int n){
if(n%2!=0)
return false;
while(true)
{
if(n%2!=0){
return false;
}
if(n==2||n==0)
break;
n=n/2;
}
return true;
}
public static void main(String str[]){
System.out.println(two.judge(1025));
}
}
复制代码
作者:
z47057554
时间:
2015-3-8 05:49
本帖最后由 z47057554 于 2015-3-8 05:52 编辑
先说10 进制
1=10*(0)自定义的幂表示
10=10*(1)
。。。
1000...0=10*(n) n表示1后面的0个数
对比说二进制
1=2*(0)
10=2*(1)
.。。。
1000...0=2*(n);n为1后面0的个数
那么判断是否2的幂的依据,就是,把每个位上的数都取出来,这里你应该会取吧
取完所有的位存放于数组,因为二进制只能取到0,1,所以只要判断数组中是不是有且仅有一个1即可,当然也可以判断具体是哪个多少幂
作者:
路文龙
时间:
2015-3-8 09:07
z47057554 发表于 2015-3-8 05:49
先说10 进制
1=10*(0)自定义的幂表示
10=10*(1)
恩,谢谢。
作者:
路文龙
时间:
2015-3-8 09:11
public static boolean powerOfTwo(int x) {
return (x & (x - 1)) == 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2