统计整数的二进制表达里有多少个1 Python版
2017-12-22 23:07
369 查看
题目:
给定一个整数,统计其二进制表示里有多少个1。
分析:
方法1:循环迭代该数的二进制的每一位,复杂度是 o(log2 n),n就是该整数
方法2:复杂度仅仅是1的个数。方法是采用位运算抹去0不需要处理。这里的位运算表达式不光在这里见到,其它地方的用处也非常多。
再者,计算机组成原理里有详细的对加减乘数四则运算的讲解,如何表示负数、小数等等,不过我都忘了……这些运算与位运算息息相关。单靠位运算即可实现十进制数的加减乘除。
代码:
给定一个整数,统计其二进制表示里有多少个1。
分析:
方法1:循环迭代该数的二进制的每一位,复杂度是 o(log2 n),n就是该整数
方法2:复杂度仅仅是1的个数。方法是采用位运算抹去0不需要处理。这里的位运算表达式不光在这里见到,其它地方的用处也非常多。
再者,计算机组成原理里有详细的对加减乘数四则运算的讲解,如何表示负数、小数等等,不过我都忘了……这些运算与位运算息息相关。单靠位运算即可实现十进制数的加减乘除。
代码:
def count1(a): ''' 整数的二进制表达里有多少个1,复杂度为a的二进制长度。 ''' num = 0 while a != 0: num += a & 1 a >>= 1 return num def count2(a): ''' 整数的二进制表达里有多少个1,复杂度仅为1的个数 ''' num = 0 while a != 0: a = a & (a - 1) # 就是这个操作,需要掌握,它的本质含义是抹去了0不考虑 num += 1 return num
相关文章推荐
- 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- C 两个整数m和n的二进制表达中,有多少个位不同
- 4.编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 预处理标识符(两个int整数m和n的二进制表达中,有多少个位(bit)不同)
- 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 【微软100题】输入一个整数,求该整数的二进制表达中有多少个1
- .编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 如何实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 每天学习一算法系列(26)(输入一个整数,求该整数的二进制表达中有多少个1)
- 求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同
- 求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 两个int(32位)整数a和b的二进制表达中,有多少个位(bit)不同