判断一个正整数是否是4的n次幂

时间:2022-03-22 14:17:47
方法一 通过正则表达式限制该数字的二进制数以1开头,中间包含n个00,并以00结束
		int num1 = 256;
		String nString =Integer.toBinaryString(num1);
		String regex = "^1(00)*$";
		System.out.println(nString.matches(regex));
		
方法二 通过位运算显示该数字大于0,该数字的二进制数只有首位数字是1,且1出现在奇数位上
		int num2 = 128;
		boolean isPowerOfFour =num2>0 && (num2 & (num2-1))==0 && (num2 & 0xAAAAAAAA)==0;
		System.out.println(isPowerOfFour);