Golang 程序检查是否为给定数字设置了第 k 位。

例子

考虑n = 20(00010100), k = 3

这样,结果在关闭之后3位=> 00010000&(1 <<(4-1))!= 0

解决这个问题的方法-

Step 1 - 定义一个方法,其中 n 和 k 将是参数,返回类型为 int。

步骤 2 - 使用 n & (1<<(k-1)) 执行 AND 运算。

步骤 3 - 如果获得的数字不是 0 ,则设置 n 中的K,否则不设置。

示例

package main

import (

   "fmt"

   "strconv"

)

func CheckKthBitSet(n, k int) int {

   return n & (1 << (k-1))

}

func main(){

   var n = 20

   var k = 3

   fmt.Printf("Binary of %d is: %s.\n", n, strconv.FormatInt(int64(n), 2))

   flag := CheckKthBitSet(n, k)

   if flag !=0 {

      fmt.Printf("%d rd bit of %d is aleady set.\n", k, n)

   } else {

      fmt.Printf("%d rd bit of %d is not set.\n", k, n)

   }

}

输出结果
Binary of 20 is: 10100.

3 th bit of 20 is aleady set.

以上是 Golang 程序检查是否为给定数字设置了第 k 位。 的全部内容, 来源链接: utcz.com/z/331813.html

回到顶部