当前位置:  开发笔记 > 编程语言 > 正文

golang指数运算操作

这篇文章主要介绍了golang指数运算操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

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 i&1 != 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)

只是把 = 换成了 ^ 。

还有更复杂一点的,但万变不离其宗,如 a &^= b:

a &^= b,分两步分解:

==> a = a &^ b

==> a = a ^ (a & b)

在Golang里面对于这种表达式都可以套用+=这种我们熟悉的,复杂一点的就按步骤分解。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有