黑马程序员技术交流社区

标题: 判断一个整数是否是2的阶次 [打印本页]

作者: Stevenj    时间: 2014-6-27 22:25
标题: 判断一个整数是否是2的阶次

例如,8、64、256都是2的阶次方数(8是2的3次方,64是2的6次方),用Java编写程序判断一个整数是否为2的次方数。

    解析:如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面接若干个0。比如8就是1000,64就是1000000。

如果将这个数减1,在和该数做相与(&)运算, 则应该全为0(8与7,一个二进制数是1000,一个二进制是111,(1000-1)&111= 0)。

即(d-1)&d =0.

代码如下:

[java] view plaincopy



效果如下:





作者: Stevenj    时间: 2014-6-27 22:26
27行计算平方和立方  求讲解啊
作者: 心者觉也    时间: 2014-6-29 19:08
楼主想问啥呢?
作者: 会飞De石头    时间: 2014-6-30 09:17
第11行  吞掉异常可不是好现象,,,,虽然不是本文重点




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2