判断一个数是否是2的n次幂的方法【位运算】

方法1 用移位方法

	public static boolean method(int a) {
		if (a < 1)
			return false;
		int num = 1;
		while (num <= a) {
			if (num == a) {
				return true;
			}
			num = num << 1;
		}
		return false;
	}

方法2 用这个数和这个数减一进行与运算

原理:如果一个数是二的n次幂,则这个数的二进制形式只有一个1,这个数减一的二进制形式和原来的数的二进制形式每一位都不同。例如:
00010000 -> 00001111
这样两者的&运算结果为0
而如果原来的数不是2的n次幂,则&运算的结果不为0

	public static boolean method(int a) {
		int i;
		i = a & (a - 1);
		return i == 0;
	}
发布了58 篇原创文章 · 获赞 0 · 访问量 991

猜你喜欢

转载自blog.csdn.net/Mason97/article/details/104518336