Golang程序 将2的前次方四舍五入

Golang程序 将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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程