Position of rightmost set bit in c

C program for Position of rightmost set bit. Here problem description and other solutions.

// Include header file
#include <stdio.h>
#include <math.h>

/*
  C Program for
  Find position of rightmost set bit
*/

// Finding the right most active bit position
void rightmostActiveBit(int n)
{
	if (n <= 0)
	{
		return;
	}
	/*
	    Example 
	    ———————
	    n    = 320
	    n    = (00101000000)   Binary
	    -n   = (11011000000)   (2s)
	    Calculate log2 
	    ——————————————
	    Formula : log(n & -n) / log(2) + 1
	    -----------------------------------
	    log(320 & -320) / log(2) + 1)
	    
	    Here : log(320 & -320) = log(64) = 4.158883
	           log(2)  = 0.693147    
	        
	    (4.158883 / 0.693147) + 1 = (7) position
	    ————————————————————————————————————————
	*/
	// Calculate rightmost active bits
	int result = (int)(log(n & -n) / log(2) + 1);
	printf(" Number : %d Result : %d\n", n, result);
}
int main()
{
	// Test Cases
	// 320 = Binary(101000000)
	rightmostActiveBit(320);
	// (1000) = Binary(1111101000)
	rightmostActiveBit(1000);
	// (153) = Binary(10011001)
	rightmostActiveBit(153);
	// (354) = Binary(101100010)
	rightmostActiveBit(354);
	// 160 = Binary(10100000)
	rightmostActiveBit(160);
}

Output

 Number : 320 Result : 7
 Number : 1000 Result : 4
 Number : 153 Result : 1
 Number : 354 Result : 2
 Number : 160 Result : 6


Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment







© 2021, kalkicode.com, All rights reserved