1 package algorithm; 2 3 /** 4 * Created by moi on 2017/10/18. 5 */ 6 public class PowerOf2 { 7 8 public static int powOf2(int n){ 9 if(n==0){ 10 return 1; 11 } 12 if(n>31){ 13 throw new RuntimeException("n>31 is too big."); 14 } 15 int base = 2; 16 while(n>1){ 17 base = base << 1; 18 System.out.println(base); 19 n--; 20 } 21 return base; 22 } 23 24 public static boolean checkPowerOf2(int n) { 25 // write your code here 26 boolean flag = true ; 27 28 if ( n < 1 ){ 29 return false; 30 } 31 32 while( n>= 2 ){ 33 // 1的二进制是 最低位为1,其余各位为0,所以这里 n & 1 即n的最低位和 1的最低位1 进行与,如果是偶数,结果就是0,奇数就是1. 34 if ( (n & 1) == 1 ){ 35 flag = false ; 36 break; 37 } 38 n = n >> 1 ; 39 } 40 return flag ; 41 } 42 43 public static void main(String[] args) { 44 PowerOf2.powOf2(3); 45 } 46 }