码迷,mamicode.com
首页 > 其他好文 > 详细

不用算术运算符,如何判定一个数是否是二的幂?

时间:2015-03-05 19:09:09      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

这是第一篇博文,我想写下的就是今天学习到的一个算法 即:不用算术运算符判定一个数是否是二的幂;

public static  bool powerOfTwo(int x) {
return (x & (x - 1)) == 0;
}

 X如果是2的幂,那么将x转化成二进制数 就只有首位为1 其他位均为0(4 100,8 1000 16 10000), 那么x-1 就是一个首位为0 其他位均为1的数(3 011, 7 0111 )这个形式的

如果x 是2的幂 那么 x和(x-1)做与运算 返回的值就必然是0。这样就能快速的判断出一个数是否为2 的幂 

统计附上 用复杂方法的代码

int fun(n)
{
/* 输入n ,如果是2 的整数次幂,则返回1,否则返回0 */
int m ;
m=n;
for(;;)
{
if( m== 1 ) 
return 1;
if( m%2 == 1 )
return 0
else
m=m/2;
}
}

  

不用算术运算符,如何判定一个数是否是二的幂?

标签:

原文地址:http://www.cnblogs.com/NEAVERS/p/4316281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!