📅  最后修改于: 2023-12-03 15:23:04.016000             🧑  作者: Mango
有一个N位的数字,我们需要将它转化为2进制,并统计其中1的个数。编写程序,输出转化后1的个数。
输入:
2
2
8
输出:
1
1
这道题的关键在于如何将一个十进制的数字转化为二进制,并且统计其中1的个数。首先我们可以使用位运算符来将十进制转化为二进制,具体操作为:
接下来我们可以根据上一步转化后得到的二进制数, 统计其中1的个数。
def binaryOnes(n: int):
count = 0
while (n)):
count += n & 1
n >>= 1
return count
if __name__ == '__main__':
t = int(input())
answers = []
for i in range(t):
n = int(input())
answers.append(binaryOnes(n))
for answer in answers:
print(answer)
这道题的难点在于十进制与二进制的转化以及对二进制数中1的个数的计数。我们可以使用位运算符来解决这个问题,将十进制n不断右移,通过与1进行按位与运算得到其二进制最后一位。接下来我们可以通过根据得到的二进制数统计其中1的位数即可。