算法搜集:求取二进制中1的个数
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ssbird.blog.51cto.com/277690/70844 |
题:给定一个8bit的变量,求其二进制表示中“1”的个数。 算法一: int Count(int v) { int num=0; while(v) { if(v%2==1) num++; v=v/2; } return num; } 算法二: int Count(int v) { int num=0 while(v) { num+=v&ox01; v>>=1; } return num; } 算法三: int Count(int v) { int num=0; while(v) { v&=(v-1); num++; } return num; } 算法四: int Count(int v) { int num=0; switch(v) { case 0x0: num=0; break; case ox1: case 0x2: case 0x4: case 0x8: case ox10: case ox20: case ox40: case 0x80: num=1; break; ...... } } 算法五: int countTable[256]= { 0,1,1,2,1,2,2,3,2,3,3...... 3,4,3,4,4,5,1,2,2,3...... ......................... } int Count(int v) { return countTable[v]; } 本文出自 “Running...” 博客,请务必保留此出处http://ssbird.blog.51cto.com/277690/70844 本文出自 51CTO.COM技术博客 |



ssbird
博客统计信息
热门文章
最新评论
友情链接