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 次瀏覽

開啟您的職業生涯

完成學習以獲得認證

開始
廣告
© . All rights reserved.