面试题——二进制中1的个数
来源:互联网 发布:创建视图的sql语句代码 编辑:程序博客网 时间:2024/05/01 09:13
题目:
实现一个函数,输入一个整数,输出该数的二进制表示中1的个数。 例如把9表示成二进制是1001, 有两位是1。 因此如果输入9,该函数输出2。
考察的是位运算, 位运算一些基本操作:
与(&), 或(|),异或(^), 左移<<, 右移>>
code:
#include <stdio.h>int NumberOf1_Solution1(int n){ int count = 0; unsigned int flag = 1; while(flag) { if(n & flag) count ++; flag = flag << 1; } return count;}int NumberOf1_Solution2(int n){ int count = 0; while (n) { ++ count; n = (n - 1) & n; } return count;}void Test(int number, unsigned int expected){ int actual = NumberOf1_Solution1(number); if(actual == expected) printf("Solution1: Test for %p passed.\n", number); else printf("Solution1: Test for %p failed.\n", number); actual = NumberOf1_Solution2(number); if(actual == expected) printf("Solution2: Test for %p passed.\n", number); else printf("Solution2: Test for %p failed.\n", number); printf("\n");}int main(){ // 输入0,期待的输出是0 Test(0, 0); // 输入1,期待的输出是1 Test(1, 1); // 输入10,期待的输出是2 Test(10, 2); // 输入0x7FFFFFFF,期待的输出是31 Test(0x7FFFFFFF, 31); // 输入0xFFFFFFFF(负数),期待的输出是32 Test(0xFFFFFFFF, 32); // 输入0x80000000(负数),期待的输出是1 Test(0x80000000, 1); return 0;}
0 0
- 面试题——二进制中1的个数
- 面试题10—二进制中1的个数
- 面试题---二进制中1的个数
- 【剑指offer】2.4.3位运算——面试题10:二进制中1的个数
- 腾讯面试题——返回一个数二进制序列中1的个数
- 剑指offer——面试题10:位运算之二进制中1的个数
- 剑指offer编程题Java实现——面试题10二进制中1的个数
- 剑指offer——面试题10:二进制中1的个数
- 剑指offer 面试题10—二进制中1的个数
- 剑指offer面试题10—二进制中1的个数
- 面试题:二进制表示中1的个数。
- 面试题10:二进制中1的个数
- 面试题10:二进制中1的个数
- [剑指offer][面试题10]二进制中1的个数
- 【面试题十】二进制中1的个数
- 面试题十 二进制中1的个数
- 《剑指offer》面试题10二进制中1的个数
- 【剑指offer】面试题10:二进制中1的个数
- android shape和selector共用按钮样式
- LCA最近公共祖先的离线算法(Tarjan)和在线算法(ST)
- 使用ant编译发布web项目
- C# 调用 C++ 写的Dll 遇到的问题(调用DLL 自动退出)
- jquery EasyUI 心得--------环境搭建
- 面试题——二进制中1的个数
- eclipse下安装Hadoop插件
- linux一个c文件要引用另一个c文件中的函数编译的时候,应该怎么编译?
- 数组中出现一半、超过一半、少于一半,三分之一的元素的问题
- ARM寄存器
- 算法题:最大递增数组个数
- 回归、插值、逼近、拟合的区别
- JSP中文乱码问题终极解决方案
- 关于cocos2d-x3.0和2.0之间的区别