我就废话不多说了,大家还是直接看代码吧~
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里面对于这种表达式都可以套用+=这种我们熟悉的,复杂一点的就按步骤分解。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持优爱好网。如有错误或未考虑完全的地方,望不吝赐教。
相关文章:
1. 怎么让div+css兼容ie6ie7ie8ie9和FireFoxChrome等浏览器2. requestAnimationFrame使用示例详解3. 基于JavaScript实现图片裁剪功能4. React优雅的封装SvgIcon组件示例5. uniapp自定义验证码输入框并隐藏光标6. 详解JavaScript中原始数据类型Symbol的使用7. JavaScript深拷贝方法structuredClone使用8. uniapp 手机验证码输入框实现代码(随机数、倒计时、隐藏手机号码中间四位)可以直接使用9. 使用Node.js实现Clean Architecture方法示例详解10. Jquery使用原生AJAX方法请求数据