果然还是得多用底层一些的语言才能锻炼脑子啊,之前都被java自带的那些util惯坏了
这个使用了位运算,效率比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
}