我就廢話不多說了,大家還是直接看代碼吧~
func main() {
fmt.Println(exponent (5,3))
}
//a的n次方
//超出uint64的部分會(huì)丟失
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
}
補(bǔ)充:Golang 位運(yùn)算之 ^
看Golang源代碼,突然看到一個(gè) a ^ b的位操作,有點(diǎn)懵,在通過不斷的寫測(cè)試驗(yàn)證,終于弄清楚了是怎么回事,在這里記錄一下,避免忘記。
在弄清楚a ^ b是怎么回事之前,我們先看一個(gè)我們熟悉的 a += b:
a += b ==> a = a + b
其實(shí)^也是一樣:
a ^ b ==> a ^ (a b)
只是把 = 換成了 ^ 。
還有更復(fù)雜一點(diǎn)的,但萬變不離其宗,如 a ^= b:
a ^= b,分兩步分解:
==> a = a ^ b
==> a = a ^ (a b)
在Golang里面對(duì)于這種表達(dá)式都可以套用+=這種我們熟悉的,復(fù)雜一點(diǎn)的就按步驟分解。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Golang如何交叉編譯各個(gè)平臺(tái)的二進(jìn)制文件詳解
- Golang 運(yùn)算符及位運(yùn)算詳解
- golang切片反序?qū)嵗?/li>
- golang 實(shí)現(xiàn)interface{}轉(zhuǎn)其他類型操作
- golang 實(shí)現(xiàn)tcp server端和client端,并計(jì)算RTT時(shí)間操作
- golang 獲取當(dāng)前執(zhí)行程序路徑的操作
- golang HTTP 服務(wù)器 處理 日志/Stream流的操作
- 淺談golang二進(jìn)制bit位的常用操作