[go] go中的分位取值

果然还是得多用底层一些的语言才能锻炼脑子啊,之前都被java自带的那些util惯坏了 :leng:

这个使用了位运算,效率比len(string)高不知道哪里去了,不过可惜只能用在二进制

for i := highBit; i >= 0; i-- {
     bit := num >> i & 1 // 右移30位与1与可以得到当前的二进制位 highBit = 30
    // 比如24 与 1就相当于011000 & 00001 只会留下当前的个位就是了
}

而得到原来的十进制数,可以这样
默认bit是从高位读到低位的

if bit != 0 {
    x = x*2 + 1 //可以优化成左移
} else {
    x = x * 2
}
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注