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;
    }
}
