確定一個數是不是2的冪

昨天看到淘米網絡的一道編程題,給定一個數判斷這個數是不是2的冪。

我自己想到的使用遞歸的方法進行實現,代碼如下。

class  squ2
{
	public static void main(String[] args) 
	{
		int m=32;
		if (is2(m))
		{
			System.out.println(m+"是2的冪");
		};
		
	}
	public static boolean is2(int a)
	{
		if (a==1)
		{
			return true;
		}
		if (a%2==1)
		{
			return false;
		}
	return is2(a=a/2);
	}
}
不過我一個同學用了一個更加簡便的方法:

用這個數和比他小的下一個整數相與,如果結果爲0則該數是2的冪,否則不是,如8和7相與爲0。

代碼如下:

public static boolean is2_1(int b)
	{
		int w=b&(b-1);
		if (w==0)
		{
			return true;
		}
		return false;
	
	}

看起來簡便多了,但是還是不知道爲什麼這樣就可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章