Add Reverse Bits Algo in Bit-Manipulation (#4299)

Co-authored-by: BamaCharanChhandogi <b.c.chhandogi@gmailcom>
This commit is contained in:
Bama Charan Chhandogi
2023-08-12 21:25:10 +05:30
committed by GitHub
parent 07945c7704
commit 251157059c
2 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,20 @@
package com.thealgorithms.bitmanipulation;
/**
* Converts any Octal Number to a Binary Number
* @author Bama Charan Chhandogi
*/
public class ReverseBits {
public static int reverseBits(int n) {
int result = 0;
int bitCount = 32;
for (int i = 0; i < bitCount; i++) {
result <<= 1; // Left shift the result to make space for the next bit
result |= (n & 1); // OR operation to set the least significant bit of result with the current bit of n
n >>= 1; // Right shift n to move on to the next bit
}
return result;
}
}

View File

@ -0,0 +1,15 @@
package com.thealgorithms.bitmanipulation;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class ReverseBitsTest {
@Test
void testReverseBits() {
assertEquals(0, ReverseBits.reverseBits(0));
assertEquals(-1, ReverseBits.reverseBits(-1));
assertEquals(964176192, ReverseBits.reverseBits(43261596));
}
}