Golang程序检查给定的正数是否为2的幂,是否不使用任何分支或循环
例子
考虑n=16(00010000)
现在找到x=n-1=>15(00001111)=>x&n=>0
解决这个问题的方法
步骤1-定义一个方法,其中n和是一个参数,返回类型为int。
步骤2-执行x=n&n-1。
步骤3-如果x为0,则给定数字为2的幂;否则,x为0。否则没有。
示例
package main
import (
"fmt"
"strconv"
)
func CheckNumberPowerOfTwo(n int) int {
return n & (n-1)
}
func main(){
var n = 16
fmt.Printf("Binary of %d is: %s.\n", n, strconv.FormatInt(int64(n), 2))
flag := CheckNumberPowerOfTwo(n)
if flag == 0{
fmt.Printf("Given %d number is the power of 2.\n", n)
} else {
fmt.Printf("Given %d number is not the power of 2.\n", n)
}
}输出结果Binary of 16 is: 10000. Given 16 number is the power of 2.
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短