package com.thealgorithms.bitmanipulation;
/**
* Lowest Set Bit
* @author Prayas Kumar (https://github.com/prayas7102)
*/
public final class LowestSetBit {
// Private constructor to hide the default public one
private LowestSetBit() {
}
/**
* Isolates the lowest set bit of the given number. For example, if n = 18
* (binary: 10010), the result will be 2 (binary: 00010).
*
* @param n the number whose lowest set bit will be isolated
* @return the isolated lowest set bit of n
*/
public static int isolateLowestSetBit(int n) {
// Isolate the lowest set bit using n & -n
return n & -n;
}
/**
* Clears the lowest set bit of the given number.
* For example, if n = 18 (binary: 10010), the result will be 16 (binary: 10000).
*
* @param n the number whose lowest set bit will be cleared
* @return the number after clearing its lowest set bit
*/
public static int clearLowestSetBit(int n) {
// Clear the lowest set bit using n & (n - 1)
return n & (n - 1);
}
}