天天看点

快速求解一个数位数的和

naive的方法就是一位一位的统计了,但是通过一个为运算的技巧,我们可以快速的求解这个问题。

(1)不妨假设这个数不超过64位,利用下面代码for循环里面的计算,可以并行的求解8个字节的位数和。

(2)接下来将val分布在8字节的和加起来 注意这里采用对半相加的办法,非常巧妙.最后的结果一定保存在最低字节里面。

(3) 经过测试这个比naive的办法可能要快了一倍左右。

def count(x):
    val = 
    for i in range():
        val += x&
        x>>=
    val += val>>
    val += val>>
    val += val>>
    print(val&) 
           

继续阅读