Number
|
Binary
|
Number-1
|
Binary
|
2
|
00000010
|
1
|
00000001
|
4
|
00000100
|
3
|
00000011
|
8
|
00001000
|
7
|
00000111
|
16
|
00010000
|
15
|
00001111
|
32
|
00100000
|
31
|
00011111
|
If n is a power
of 2, then n&(n-1) is equal to 0.
public class PowerOfTwo { public static boolean isPowerOfTwo(int n) { return ((n & (n - 1)) == 0); } }
Following is
the junit test case for above program.
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; public class PowerOfTwoTest { @Test public void test1() { assertTrue(PowerOfTwo.isPowerOfTwo(2)); assertTrue(PowerOfTwo.isPowerOfTwo(4)); assertTrue(PowerOfTwo.isPowerOfTwo(8)); assertTrue(PowerOfTwo.isPowerOfTwo(16)); assertTrue(PowerOfTwo.isPowerOfTwo(32)); assertTrue(PowerOfTwo.isPowerOfTwo(64)); assertTrue(PowerOfTwo.isPowerOfTwo(1)); assertFalse(PowerOfTwo.isPowerOfTwo(3)); assertFalse(PowerOfTwo.isPowerOfTwo(5)); assertFalse(PowerOfTwo.isPowerOfTwo(6)); assertFalse(PowerOfTwo.isPowerOfTwo(7)); } }
No comments:
Post a Comment