2的2018次幂的运算末位数怎么算

如何快速判断正整数是2的N次幂 – 过往记忆
欢迎关注Hadoop、Hive、Hbase、Flume等微信公共账号:iteblog_hadoop。
文章总数:693
浏览总数:7,580,265
评论:4066
分类目录:80 个
注册用户数:1698
最后更新:日
欢迎关注微信公共帐号:iteblog_hadoop
  这个问题可能很多面试的人都遇到过,很多人可能想利用循环来判断,代码可能如下所示:
public static boolean isPowOfTwo(int n) {
int temp = 0;
for (int i = 1; ; i++) {
temp = (int) Math.pow(2, i);
if (temp &= n)
if (temp == n)
  上面的代码简单明了。但是,这样的方案效率比较低。我们仔细分析一下,正整数是2的n次幂他有什么规律?20=1,21=2,22=4,23=8....这样看是没有什么规律的。但是如果将2的幂次方写成二进制形式后,很容易就会发现有以下两个特点:
  1、20=1 -& 0001,21=2 -& 0010,22=4 -&
-& 1000二进制中只有一个1,并且1后面跟了n个0。
  2、如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零((x & x- 1) == 0)。
  原因:因为2n换算是二进制为10……0这样的形式,2n-1的二进制为0111...1,两个二进制求与结果为0,例如:16的二进制为111,两者相与的结果为0。计算如下:
所以可以用下面实现
public static boolean isPowerOfTwo(int x) {
return x & 0 & (x & (x - 1)) == 0;
  很简单的一行代码就实现了。细心的读者可能会问:2的n次幂二进制始终都是只有一个1,其它的位数都为0,是否可以判断给定的数转换为二进制来判断其中是否只有1个1来得出给定数是否为2的n次幂呢?答案是不能。因为Integer.MIN_VALUE的二进制只有1个1,但是Integer.MIN_VALUE并不是2的n次幂,所以不能用上面方式来实现。(完)
本博客文章除特别声明,全部都是原创!
禁止个人和公司转载本文、谢谢理解:
下面文章您可能感兴趣负数的负次幂怎么算,例如-3的-2次幂
年年wan239
为您推荐:
其他类似问题
扫描下载二维码负二的2017次方加上负二的2018次方等于多少
明媚忧伤丁
-2的2017次方+负2的2018次方=-2的2017次方+2*2的2017次方=2的2017次方
为您推荐:
其他类似问题
扫描下载二维码末尾数是5的两位数的2次幂的规律
十位数×(十位数+1)×100+25
115²=(11×12)×100+25=13225
再举一个例子,不懂
105²=(10×11)×100+25=11025
为您推荐:
其他类似问题
幂:十位、个位是25,千位、百位是原数*(原数+1) 如:15^2=225,
15²=22525²=62535²=122545²=202555²=302565²=422575²=562585²=722595²=9025 规律:最后两位数都是25结果的前两位数是十位数与下一个十位数的乘积,如65²的结果前两位就是6*7=42
果然是高手
扫描下载二维码2的100次幂-2的99次幂-2的98次幂.-2的2次幂-2-1怎么算急用( ⊙ o ⊙
2^100-2^99=2*2^99-2^99=2^992^99-2^98=2*2^98-2^98=2^98.由此类推,原式=1
为您推荐:
其他类似问题
原式=2^100-(2^99+2^98+...+2^2+2+1)后面的为等比数列,q=2 a1=1 n=100原式 =2^100- (1-2^100)/(1-2)
=2^100-2^100+1
因为2^(N+1)-2^N=2*2^N-2^N=(2-1)*2^N=2^N所以 2^100-2^99=2^992^99-2^98=2^98....2^2-2=2所以原式=2-1=1
扫描下载二维码}

我要回帖

更多关于 身份证末位计算器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信