/* * 判断给定数是否为2的幂。 * 1.判断该数是否能被2整除,若不能整除,直接返回false,若能整除,再判断最后除2的商是否等于1,若等于1,则返回true,否则返回false。 * 2.若一个数是2的幂数,则它的二进制表示只存在一个1,且该1位于二进制的最右边。使用&运算,运算(x & (-x))则只保留x二进制的最右边的1。 * 比如:x = 6 的二进制表示: 0000 0110 * -x 的二进制表示:1111 1010 * x & -x 的二进制表示:0000 0010 * 如果x是2的幂数,则(x & (-x))== x。 * * */ public class IsPowerofTwo { public static void main(String[] args) { IsPowerofTwo res = new IsPowerofTwo(); System.out.println(res.isPowerofTwo(8)); } //判断给定的数是否为2的幂 public boolean isPowerofTwo1(int n){ if(n == 0){ return false; } while(n % 2 == 0) n = n/2; return n == 1; } //判断给定的数是否为2的幂 public boolean isPowerofTwo2(int n){ if(n <= 0){ return false; } return (n & (-n)) == n; } }
leetcode---判断是否为2的幂
最新推荐文章于 2022-01-12 16:43:17 发布