Golang 程序查找最右边设置位的位置

go programmingserver side programmingprogramming更新于 2025/5/10 10:52:17

示例

考虑 n = 20(00010100)

现在返回 log2(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("%d 的二进制为:%s.\n", n, strconv.FormatInt(int64(n), 2))
   fmt.Printf("给定数字 %d 的最右边设置位的位置为 %d.\n", n, FindRightMostSetBit(n))
}

输出

20 的二进制为:10100。
给定数字 20 的最右边设置位的位置为 3。

相关文章