Go 语言程序向上舍入到 2 的下一个幂。


示例

例如,n = 12 => 前一个 2 的幂次方数是 8。

例如,n = 20 => 前一个 2 的幂次方数是 16。

解决此问题的方法

步骤 1 − 定义一个接受数字 n 的方法。

步骤 2 − 执行 n | (n >> k),其中 k 为 1、2、4、8、16。

步骤 3 − 最后,返回 n - (n >> 1)。

示例

 现场演示

package main
import "fmt"
func PreviousPowOf2(n int) int{
   n = n | (n >> 1)
   n = n | (n >> 2)
   n = n | (n >> 4)
   n = n | (n >> 8)
   n = n | (n >> 16)
   return n - (n >> 1)
}
func main(){
   fmt.Printf("Previous round number, power of 2 for %d is %d\n", 20, PreviousPowOf2(20))
   fmt.Printf("Previous round number, power of 2 for %d is %d\n", 12, PreviousPowOf2(12))
   fmt.Printf("Previous round number, power of 2 for %d is %d\n", 131, PreviousPowOf2(131))
}

输出

Previous round number, power of 2 for 20 is 16
Previous round number, power of 2 for 12 is 8
Previous round number, power of 2 for 131 is 128

更新时间: 18-Mar-2021

148 次浏览

开启您的职业生涯

完成学习以获得认证

开始
广告