Add Index Of Right Most Set Bit Test (#4325)

* add Index Of Right Most Set Bit Test

* clang linter solved
This commit is contained in:
Bama Charan Chhandogi 2023-08-23 11:14:53 +05:30 committed by GitHub
parent 4bcddd323c
commit 52f365a915
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,28 @@
package com.thealgorithms.bitmanipulation;
/**
* Find The Index Of Right Most SetBit
* @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi)
*/
public class IndexOfRightMostSetBit {
public static int indexOfRightMostSetBit(int n) {
if (n == 0) {
return -1; // No set bits
}
// Handle negative numbers by finding the two's complement
if (n < 0) {
n = -n;
n = n & (~n + 1); // Get the rightmost set bit in positive form
}
int index = 0;
while ((n & 1) == 0) {
n = n >> 1;
index++;
}
return index;
}
}

View File

@ -0,0 +1,20 @@
package com.thealgorithms.bitmanipulation;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
/**
* Test case for Index Of Right Most SetBit
* @author Bama Charan Chhandogi (https://github.com/BamaCharanChhandogi)
*/
class IndexOfRightMostSetBitTest {
@Test
void testIndexOfRightMostSetBit() {
assertEquals(3, IndexOfRightMostSetBit.indexOfRightMostSetBit(40));
assertEquals(-1, IndexOfRightMostSetBit.indexOfRightMostSetBit(0));
assertEquals(3, IndexOfRightMostSetBit.indexOfRightMostSetBit(-40));
}
}