近乎O求二进制数中1的个数
Posted xwx2354672579
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了近乎O求二进制数中1的个数相关的知识,希望对你有一定的参考价值。
以前一直在用很普通的方式求二进制中1的个数
1 int run(int n) 2 int cnt; 3 while(n>0) 4 n=n&(n-1); 5 cnt++; 6 7
啊我好菜啊
发现大佬都用一种奇奇怪怪的算法 O(1)就解决了这种问题
int bsrun(int n) int tmp=n - ((n>>1) &033333333333)-((n>>2) &011111111111); return((tmp+(tmp>>3)) &030707070707) %63;
为什么?
我也不懂鸭。。。
以上是关于近乎O求二进制数中1的个数的主要内容,如果未能解决你的问题,请参考以下文章