我正在尝试使用 python 计算给定数字中的位数:
def countBit(self, n: int) -> int:
l=[int(d) for d in str(n)]
return(sum(l))
这个函数的输入是 00000000000000000000000000001011 ,预期输出是 3,但我得到 2 作为输出。
你能建议我一种继续进行的方法吗?
您要添加数字的十进制表示形式的数字,而不是二进制表示形式。
从您的预期输出来看,我猜您实际上只想计算
1
位,而不是 0
位。
使用
bin()
函数将数字转换为二进制字符串。
def countBit(n: int) -> int:
return sum(b == '1' for b in bin(n))
在 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