Golang程序查找最右边的设置位的位置
例子
考虑n=20(00010100)
现在返回日志2(20&-20)=>2+1=>3
解决这个问题的方法
步骤1-定义一个方法,其中n和是一个参数,返回类型是int。
步骤2-返回log2(n&-n)+1。
示例
package main
import (
"fmt"
"math"
"strconv"
)
func FindRightMostSetBit(n int) int {
if (n & 1) != 0{
return 1
}
return int(math.Log2(float64(n & -n))) + 1
}
func main(){
var n = 20
fmt.Printf("Binary of %d is: %s.\n", n, strconv.FormatInt(int64(n), 2))
fmt.Printf("Position of the rightmost set bit of the given number %d is %d.\n", n, FindRightMostSetBit(n))
}输出结果Binary of 20 is: 10100. Position of the rightmost set bit of the given number 20 is 3.
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短