当前位置 博文首页 > golang指数运算操作

    golang指数运算操作

    作者:思维的深度 时间:2021-02-09 06:29

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

    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里面对于这种表达式都可以套用+=这种我们熟悉的,复杂一点的就按步骤分解。

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

    js
    下一篇:没有了