# Position of rightmost set bit in golang

``````package main
import "math"
import "fmt"
/*
Go Program for
Find position of rightmost set bit
*/
// Finding the right most active bit position
func rightmostActiveBit(n int) {
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
var result int = int((math.Log(float64(n & -n)) / math.Log(2.0) + 1))
fmt.Println(" Number : ", n, " Result : ", result)
}
func 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
``````

## Comment

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.