原数(10进制) 原数(2进制) 原数-1(2进制)
1 1 0
2 10 01
4 100 011
8 1000 0111
16 10000 01111

观察上面的表格,如果1个数是2的幂次方,转换成2进制,必然最高位是1,其它位都是0,同时这个数减1后,所有有效位全是0,利用这个特点,做1次&位运算即可

    boolean isPowerOf2(int a) {
        return (a & (a - 1)) == 0;
    }

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-30
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案