Golang 程序用于打开数字的第 k 位。

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

示例

例如,考虑 n = 20(00010100),k = 4。
因此打开第 4 位后的结果 => 00010000 | (1 << (4-1))

解决此问题的方法

步骤 1 − 定义一个方法,其中 nk 为参数,返回类型为 int

步骤 2 − 对 n | 执行 AND 运算(1<<(k-1))。

步骤 3 − 返回获得的数字。

示例

package main
import (
   "fmt"
   "strconv"
)
func TurnOnKthBit(n, k int) int {
   return n | (1 << (k-1))
}
func main(){
   var n = 20
   var k = 4
   fmt.Printf("%d 的二进制为:%s.\n", n, strconv.FormatInt(int64(n), 2))
   newNumber := TurnOnKthBit(n, k)
   fmt.Printf("打开 %d 后,%d 的第 %d 位为:%d.\n", k, n, newNumber)
   fmt.Printf("%d 的二进制为:%s.\n", newNumber,
   strconv.FormatInt(int64(newNumber), 2))
}

输出

20 的二进制为:10100。
20 的第 4 位置位后为:28。
28 的二进制为:11100。

相关文章