剑指offer: 二进制中1的个数(位运算)
2015-06-29 18:06
316 查看
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。分析:
可以通过每次与1,判断最后一位是否为1,然后右移。移动的次数为位数,与机器字长有关,可以通过sizeof得出字结束,然后乘以8.
代码:
int NumberOf1(int n) { if(n==0) return 0; int bitLen = sizeof(n)*8; int count = 0; for(int i=0;i<bitLen;i++){ if((n & 1) == 1) count++; n = n>>1; } return count; }
相关文章推荐
- 10个必备的CSS技巧总结
- html5之meta标签viewport应用
- html5学习笔记(2)
- html5学习笔记(1)简介
- Bootstrap系列 -- 40. 导航条二级菜单
- Bootstrap系列 -- 39. 导航条添加标题
- Jsoncpp Compiler、Programming
- nodejs 导出excel
- [LeetCode][JavaScript]Majority Element II
- soundjs的简单示例
- Bootstrap系列 -- 38. 基础导航条
- JS判断页面所有Iframe是否全部请求完成加载完成
- CSS3 text-overflow 属性
- protocol buffer介绍(protobuf)
- CSS强制性换行
- angularJs ng-switch
- 瀑布流(JQuery 版 和js 最终版)
- 简单文本消息交互接口之使用json
- 无锁编程[0]__多线程条件下的计数器__原子的加/减/与/或/异或操作__sync_fetch_and_add,__sync_add_and_fetch等
- 序列化、反序列化与jsoncpp学习