求一个正整数转成二进制后,有多少个1?
来源:互联网 发布:淘宝哪个店铺男装好看 编辑:程序博客网 时间:2024/04/28 22:01
之前,看到一个判断一个正数是否是2的乘方(比如16是2的4次方)。要求性能尽可能高。
思路一:从int temp = 1开始,每次循环比较是否与number相等,不相等就让temp增大一倍(temp = temp*2),如此循环比较,直到相等为止。
这个方法的时间复杂度是O(LogN)。
思路二:寻找是2的乘方的数,的规律。
N N-1 2 -> 10b 1b 4 -> 100b 11b 8 -> 1000b 111b 16 -> 10000b 1111b
最高位都是1。
所以,N&(N-1) = 0。时间复杂度为O(1)。
那么,求一个正整数转成二进制后,有多少个1?
当然,也应该与位运算有关了。
一个数N,N&1 要么是0,要么是1。
所以,结果为1时,说明最低位是1。为0时,说明最低位不是1。
因此,每次&后,都右移一位,再次&,直到N右移为0时,结束循环。
NSInteger value = 111; NSInteger count = 0; while (value) { NSLog(@"%ld",value&1); int x = value&1; if (x == 1) count++; value = value>>1; }
1 0
- 求一个正整数转成二进制后,有多少个1?
- 求一个整数的二进制后面有多少个0
- 求一个数的二进制中有多少个一
- 输入一个整数,求该整数的二进制表达中有多少个1
- 求一个unsigned int 数的二进制表示中有多少个1?
- 求一个数的二进制表示中,有多少个1的问题
- 求一个整数的二进制形式会有多少个1
- 输入一个整数,求该整数的二进制表示中有多少个1
- 求一个unsigned int 数的二进制表示中有多少个1?
- 求一个数的二进制中有多少个1的两种解法
- 求一个数的二进制中有多少个1的最优解法
- 输入一个整数,求该整数的二进制表达中有多少个1
- 求整数的二进制表达中有多少个1
- 将一个正整数转成二进制
- c/C++ 求一个二进制数中有多少个1
- 一个数字的二进制有多少个1(转)
- 计算一个数的二进制形式有多少个1
- 判断一个整数的二进制数有多少个1
- 一个月对于laravel框架的理解
- 原生App vs 移动Web App
- 【Java每日一题】20161124
- 记glide框架使用中所遇到的问题
- javascript中判断一个值是否在数组
- 求一个正整数转成二进制后,有多少个1?
- Bitmap的一个示例,一个类似于电脑上绘画板的一个程序
- 学习AOP之透过Spring的Ioc理解Advisor
- Android之---BroadcastReceiver介绍
- 什么样的人创业
- IE不支持getElementsByClassName解决办法
- 栈的应用-中序表达式转后序表达式
- body对象
- spring-test单元测试(二)-进行struts action的请求单元测试