输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
👀
-----------
数字转二进制
计算机语言有无数种,但是到头来最后还是会转成 二进制
,因为计算机只认识 二进制
的格式的编码,数字转 二进制
有无数种公式算法,但是 在 python
中,数字转二进制编码 只需要通过一个方法就行了 :bin()
,如:
a = 123
b = bin(a)
print(b)
输出:
In [5]:
0b1111011
运行结果如:0b1111011
,0b
代表的是二进制 0b
后面跟着的就是 二进制 编码的运算结果所以结果为:0b1111011
,也就是 1111011
-------
在本题中直接调用bin()方法得到二进制数据,并使用count()方法对得到的二进制数据中1的个数进行计数
a = int(input())
print(bin(a).count('1'))
基于移位运算的解法
num = int(input())
counts = 0
while num !=0:
if num % 2 == 1:
counts = counts+1
num = num >> 1
print(counts)