我就廢話不多說了,大家還是直接看代碼吧~
func main() { fmt.Println(exponent (5,3)) } //a的n次方 //超出uint64的部分會丟失 func exponent (a,n uint64) uint64 { result := uint64(1) for i := n ; i > 0; i >>= 1 { if i1 != 0 { result *= a } a *= a } return result }
補充:Golang 位運算之 ^
看Golang源代碼,突然看到一個 a ^ b的位操作,有點懵,在通過不斷的寫測試驗證,終于弄清楚了是怎么回事,在這里記錄一下,避免忘記。
在弄清楚a ^ b是怎么回事之前,我們先看一個我們熟悉的 a += b:
a += b ==> a = a + b
其實^也是一樣:
a ^ b ==> a ^ (a b)
只是把 = 換成了 ^ 。
還有更復(fù)雜一點的,但萬變不離其宗,如 a ^= b:
a ^= b,分兩步分解:
==> a = a ^ b
==> a = a ^ (a b)
在Golang里面對于這種表達式都可以套用+=這種我們熟悉的,復(fù)雜一點的就按步驟分解。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。