我就废话不多说了,大家还是直接看代码吧~
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)
只是把 = 换成了 ^ 。
还有更复杂一点的,但万变不离其宗,如 a ^= b:
a ^= b,分两步分解:
==> a = a ^ b
==> a = a ^ (a b)
在Golang里面对于这种表达式都可以套用+=这种我们熟悉的,复杂一点的就按步骤分解。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
您可能感兴趣的文章:- Golang如何交叉编译各个平台的二进制文件详解
- Golang 运算符及位运算详解
- golang切片反序实例
- golang 实现interface{}转其他类型操作
- golang 实现tcp server端和client端,并计算RTT时间操作
- golang 获取当前执行程序路径的操作
- golang HTTP 服务器 处理 日志/Stream流的操作
- 浅谈golang二进制bit位的常用操作