golang指數(shù)運(yùn)算操作
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
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 i&1 != 0 { result *= a } a *= a } return result }
補(bǔ)充:Golang 位運(yùn)算之 &^
看Golang源代碼,突然看到一個(gè) a &^ b的位操作,有點(diǎn)懵,在通過(guò)不斷的寫(xiě)測(cè)試驗(yàn)證,終于弄清楚了是怎么回事,在這里記錄一下,避免忘記。
在弄清楚a &^ b是怎么回事之前,我們先看一個(gè)我們熟悉的 a += b:
a += b ==> a = a + b
其實(shí)&^也是一樣:
a &^ b ==> a ^ (a & b)
只是把 = 換成了 ^ 。
還有更復(fù)雜一點(diǎn)的,但萬(wà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ò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
go通過(guò)benchmark對(duì)代碼進(jìn)行性能測(cè)試詳解
在開(kāi)發(fā)中我們要想編寫(xiě)高性能的代碼,或者優(yōu)化代碼的性能時(shí),你首先得知道當(dāng)前代碼的性能,在go中可以使用testing包的benchmark來(lái)做基準(zhǔn)測(cè)試 ,文中有詳細(xì)的代碼示例,感興趣的小伙伴可以參考一下2023-04-04golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解
這篇文章主要介紹了golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12go語(yǔ)言實(shí)現(xiàn)Elasticsearches批量修改查詢及發(fā)送MQ操作示例
這篇文章主要為大家介紹了go語(yǔ)言實(shí)現(xiàn)Elasticsearches批量修改查詢及發(fā)送MQ操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04詳解Go語(yǔ)言中Validator庫(kù)的使用方法和用途
github.com/go-playground/validator 是一個(gè) Go 語(yǔ)言的庫(kù),用于對(duì)結(jié)構(gòu)體字段進(jìn)行驗(yàn)證,它提供了一種簡(jiǎn)單而靈活的方式來(lái)定義驗(yàn)證規(guī)則,在這篇文章中,我們將從一個(gè)簡(jiǎn)單的問(wèn)題出發(fā),帶你了解 Validator 庫(kù)的用途,也會(huì)介紹Validator 的基本使用2023-09-09golang實(shí)現(xiàn)簡(jiǎn)易的分布式系統(tǒng)方法
這篇文章主要介紹了golang實(shí)現(xiàn)簡(jiǎn)易的分布式系統(tǒng)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10