剑指Offer之二进制中1的个数(题10)
2016-05-26 21:42
302 查看
1 /**************************************** 2 > File Name:test.c 3 > Author:xiaoxiaohui 4 > mail:1924224891@qq.com 5 > Created Time:2016年05月23日 星期一 21时04分35秒 6 ****************************************/ 7 8 #include<stdio.h> 9 10 int SumOfBit(int num) 11 { 12 int count = 0; 13 int i = 0; 14 15 for(;i <= 32; i++) 16 { 17 if( (num & (1 << i)) == 1) //对应的bit位为1 18 { 19 count++; 20 } 21 } 22 23 return count; 24 }
1 /**************************************** 2 > File Name:test1.c 3 > Author:xiaoxiaohui 4 > mail:1924224891@qq.com 5 > Created Time:2016年05月23日 星期一 21时24分40秒 6 ****************************************/ 7 8 9 10 11 /*这种算法只适应于正数的情况, 当为num为负数时,在某些平台下会是死循环 12 这种算法如果是正数,则不用算32次循环了*/ 13 14 15 #include<stdio.h> 16 17 int NumOfBit(int num) 18 { 19 int count = 0; 20 21 while(num != 0) 22 { 23 if( (num & 1) == 1) 24 { 25 count++; 26 } 27 28 num >> 1; 29 } 30 31 return count; 32 } ~
1 /**************************************** 2 > File Name:test3.c 3 > Author:xiaoxiaohui 4 > mail:1924224891@qq.com 5 > Created Time:2016年05月23日 星期一 21时30分13秒 6 ****************************************/ 7 8 9 10 11 /*这种算法最佳*/ 12 13 #include<stdio.h> 14 15 int NumOfBit(int num) 16 { 17 int count = 0; 18 19 while(num != 0) 20 { 21 num = num & (num - 1); 22 count++; 23 } 24 25 return count; 26 }
相关文章推荐
- mysql binlog二进制日志详解
- 详解C++编程中对二进制文件的读写操作
- 整理C# 二进制,十进制,十六进制 互转
- 在ASP.NET 2.0中操作数据之五十四:添加新记录时包含一个文件上传选项
- c#二进制逆序方法详解
- JS幻想 读取二进制文件第1/2页
- 使用jscript实现二进制读写脚本代码
- C#二进制序列化实例分析
- JavaScript前端开发之实现二进制读写操作
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
- javascript 二进制运算技巧解析
- 如何判断一个整数的二进制中有多少个1
- MSSQL 将截断字符串或二进制数据问题的解决方法
- 二进制中1的个数
- C++ 十进制转换为二进制的实例代码
- C语言十进制转二进制代码实例
- asp.net实现图片以二进制流输出的两种方法
- C++二进制翻转实例分析
- PowerShell把IP地址转换成二进制的方法
- 科学知识:二进制、八进制、十进制、十六进制转换