计算整数中1的二进制位数(负数用补码)
2016-03-13 08:34
302 查看
class Solution { public: int NumberOf1(int n) { int count=0; while(n) { count++; n=n&(n-1); } return count; } };
classSolution { public: int NumberOf1(intn) { int ans = 0; while(n) { if(n & 1) ans++; n = logicalShift(n, 1); } return ans; } //实现逻辑右移 int logicalShift(int x, int n) { int tmp = ~(1<< 31); //0x7f ff ff ff tmp = ((tmp >> n) << 1) + 1; //因为n >= 0,实现tmp >> (n-1)的功能 tmp = tmp & (x >> n); // return tmp; } };
相关文章推荐
- 类的学习
- 异常语句
- shell读取文件的指定行字符串
- 第三周项目 换硬币
- 寻找最小数
- NDK开发第二蛋 Hello NDK
- UVA10765-Doves and bombs(BCC)
- iOS开发-UI控件:屏幕方向那点事儿
- HDU 5641 King's Phone【模拟】
- HDU 5641 King's Phone【模拟】
- msup 蚂蚁开放日游记之 全链路监控
- T9 (HDU_1298,POJ_1451) 字典树 + DFS
- JSP的内置对象有哪些,作用是什么,方法有哪些
- C# 使用MySqlBulkLoader 批量导入数据到Mysql
- spring 源码研究---bean包--BeanWapper TypeCoverter PropertyEditorRegistrySupport BeanInfo PropertyValue
- HDU 5640 King's Cake【模拟】
- HDU 5640 King's Cake【模拟】
- iOS开发-基础: NSDate 以秒数加减
- linux c 定义打印时间/文件名/行/函数日志的可变参数宏定义,如果需要的话可以参考
- 第三周项目百钱白鸡问题