8,64,256都是2的阶次方数(例8是2的3次方),用java编写程序,用两种方法来判断一个整数是不是2的阶次方数,并说明哪个方法更好。
查看复制到剪切板打印
return n==0 ? false : (n-1)&n==0;
return n==0 ? false : (n-1)&n==0;
先说3元运算符A?B:C的意思是看A是否为真,如果为真,就执行B;否则执行C。
0不是2的阶次数,返回假;否则判断(n-1)&n==0,因为2的阶次数有一个特点:都是首位为1,其他位是0.
所以如果n是2的阶次数,那就有(n-1)&n==0为真,&是位与运算符,相当于位上的'而且'
1&1=1 1&0=0 0&0=0
否则(n-1)&n==0为假。
Java面试题:判断一个数字是否为2的阶次方数
最新推荐文章于 2021-03-21 15:37:39 发布