Golang 程序关闭数字的第 k 位。
go programmingserver side programmingprogramming更新于 2025/5/10 12:22:17
示例
考虑 n = 20(00010100),k = 3 关闭第 3 位后的结果 => 00010000 & ^(1<<(3-1)) => 00010000 & ^(1 << 2) => 00010000 => 16s
解决此问题的方法
步骤 1 − 定义一个方法,其中 n 和 k 为参数,返回类型为 int。
步骤 2 −对 n & ^(1<<(k-1)) 进行 AND 运算。
步骤 3 − 返回得到的数字。
示例
package main import ( "fmt" "strconv" ) func TurnOffKthBit(n, k int) int { return n & ^(1 << (k-1)) } func main(){ var n = 20 var k = 3 fmt.Printf("%d 的二进制为:%s.\n", n, strconv.FormatInt(int64(n), 2)) newNumber := TurnOffKthBit(n, k) fmt.Printf("关闭 %d 后 %d 的第 rd 位为:%d.\n", k, n, newNumber) fmt.Printf("%d 的二进制为:%s.\n", newNumber, strconv.FormatInt(int64(newNumber), 2)) }
输出
20 的二进制为:10100。 关闭 20 的第 3 位后为 16。 16 的二进制为:10000。