Is power two algo added. (#4321)

* is power two algo added

* Linter solved

* Update src/main/java/com/thealgorithms/bitmanipulation/IsPowerTwo.java

* Update src/test/java/com/thealgorithms/bitmanipulation/IsPowerTwoTest.java

---------

Co-authored-by: BamaCharanChhandogi <b.c.chhandogi@gmailcom>
Co-authored-by: Debasish Biswas <debasishbsws.dev@gmail.com>
This commit is contained in:
Bama Charan Chhandogi 2023-08-18 18:23:09 +05:30 committed by GitHub
parent 68fdec5977
commit b61faf4ede
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,16 @@
package com.thealgorithms.bitmanipulation;
/**
* Is number power of 2
* @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi)
*/
public class IsPowerTwo {
public static boolean isPowerTwo(int number) {
if (number <= 0) {
return false;
}
int ans = number & (number - 1);
return ans == 0;
}
}

View File

@ -0,0 +1,34 @@
package com.thealgorithms.bitmanipulation;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
/**
* Test case for IsPowerTwo class
* @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi)
*/
public class IsPowerTwoTest {
@Test
public void testIsPowerTwo() {
// test some positive powers of 2
assertTrue(IsPowerTwo.isPowerTwo(1));
assertTrue(IsPowerTwo.isPowerTwo(2));
assertTrue(IsPowerTwo.isPowerTwo(4));
assertTrue(IsPowerTwo.isPowerTwo(16));
assertTrue(IsPowerTwo.isPowerTwo(1024));
// test some negative numbers
assertFalse(IsPowerTwo.isPowerTwo(-1));
assertFalse(IsPowerTwo.isPowerTwo(-2));
assertFalse(IsPowerTwo.isPowerTwo(-4));
// test some numbers that are not powers of 2
assertFalse(IsPowerTwo.isPowerTwo(0));
assertFalse(IsPowerTwo.isPowerTwo(3));
assertFalse(IsPowerTwo.isPowerTwo(5));
assertFalse(IsPowerTwo.isPowerTwo(15));
assertFalse(IsPowerTwo.isPowerTwo(1000));
}
}