如何在python中计算数字的位数

问题描述 投票:0回答:2

我正在尝试使用 python 计算给定数字中的位数:

def countBit(self, n: int) -> int:
    l=[int(d) for d in str(n)]
    return(sum(l))

这个函数的输入是 00000000000000000000000000001011 ,预期输出是 3,但我得到 2 作为输出。

你能建议我一种继续进行的方法吗?

python bit
2个回答
0
投票

您要添加数字的十进制表示形式的数字,而不是二进制表示形式。

从您的预期输出来看,我猜您实际上只想计算

1
位,而不是
0
位。

使用

bin()
函数将数字转换为二进制字符串。

def countBit(n: int) -> int:
    return sum(b == '1' for b in bin(n))

0
投票

在 python 3.10+ 中有一个 bit_count 函数。

我用它来计算文件中的所有 (1) 位:

bcount=sum([x.bit_count() for x in open("file.bin","rb").read()])

计算单个字节中的位数:

>>> x=0x55
>>> x.bit_count()
4
© www.soinside.com 2019 - 2024. All rights reserved.