面试题10:二进制中1的个数

来源:互联网 发布:台风战斗机 知乎 编辑:程序博客网 时间:2024/05/19 05:38
/*main DefinitionCreated by taotao man on 2015-10-29brief: 实现一个函数,输入整数,输出该数的二进制表示中1的个数。date:// 修改记录:add SetA();change GetA();*/#include <stdio.h>//#include <iostream>using namespace std;int NumberOf1(int n){/*m >> n 表示: 把m 右移 n位对于右移运算符   >>如果数字原先是一个正数,则右移之后在最左边补n个0;如果数字原先是一个负数,那么右移之后最左边补n个1。一个整数的二进制,如果该整数和1做与运算,结果是1,表示该整数最右边一位是1,否则是0*/int count = 0;while(n){if(n & 1)count++;n = n >> 1;}return count;}void Test(int n, int expected){if(NumberOf1(n) == expected)printf("实验成功\n");elseprintf("实验失败\n");}int main(int argc, char *argv[]){Test(9, 2);//system("pause");return 0;}

0 0