您的位置:首页 > 编程语言 > C#

C#系列--位运算(3)

2008-12-08 11:42 148 查看
问题3:对字节变量,其二进制表示法中求有多少个1,如 00101010则返回值为 3,也是要求效率最高

关于此题答案很多,这里不再一一列出,下面这个算法时间复杂度是O(m),m取决于数字中1的个数

//判断一个整数二进制表示中1的个数
public static int OnesCount(int number)
{
int num = 0;

while (number != 0)
{
number &= number - 1;
num++;
}

return num;
}

关于其他各种算法的探讨,可以参考两本书,程序员面试攻略第2版(机械工业出版社) 11.2位操作 和 编程之美(电子工业出版社) 2.1 有更详细的论述

下面我们关注一下枚举类型和位标记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: