![]() |
1
7
|
![]() |
2
0
您希望代码的可读性如何?
这是“黑客的喜悦”中的比特计数算法,这是一个有用的比特撞击算法的古老宝库。
执行成对的比特相加。请注意
所以
这意味着,如果每对中都设置了2,则减去结果将减去1,如果未设置,则不减去任何结果。在每一对比特中,您现在都有该对的计数,存储在该对曾经所在的位置。 然后,其他行进行成对求和,将每对“2位”的计数相加,将每一对“4位”的数相加,将每个对“8位”的总数相加,以此类推。如果你需要做两个64位字,你可以多加一行。 最后,要查看是否设置了一个位,请检查计数是否等于1。
请注意,虽然这很有趣,但最好使用
黑客的喜悦 https://learning.oreilly.com/library/view/hackers-delight-second/9780133084993/ |