我就廢話不多說了,大家還是直接看代碼吧~
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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Golang如何交叉編譯各個平臺的二進制文件詳解
- Golang 運算符及位運算詳解
- golang切片反序?qū)嵗?/li>
- golang 實現(xiàn)interface{}轉(zhuǎn)其他類型操作
- golang 實現(xiàn)tcp server端和client端,并計算RTT時間操作
- golang 獲取當(dāng)前執(zhí)行程序路徑的操作
- golang HTTP 服務(wù)器 處理 日志/Stream流的操作
- 淺談golang二進制bit位的常用操作