如何在Python中计算二进制数的二进制序列?

时间:2017-08-10 19:23:39

标签: python-3.x

我想在5760个二进制位中计算'01'序列。

首先,我想组合几个二进制数,然后计算'01'次数。

例如,我有64位整数。说,6291456。然后我将其转换为二进制。不使用最重要的4位。所以我将获得60位二进制000 ... 000011000000000000000000000 然后我需要组合(只是将位放在一起因为我只需要计数'01')前60位+后60位+ ...所以60位中的96位被拼接在一起。

最后,我想知道有多少'01'出现。

s = binToString(5760 binary bits)
cnt = s.count('01');

2 个答案:

答案 0 :(得分:1)

num = 6291226
binary = format(num, 'b')
print(binary)
print(binary.count('01'))

如果我使用你给出的数字,即6291456,它的二进制表示是11000000000000000000000,它出现0次' 01'。

如果您总是希望您的号码长度为60位,则可以使用

binary = format(num,'060b')

它将添加前导0以使其具有给定长度

答案 1 :(得分:0)

假设nums是96个数字的列表,每个数字可以以64位存储。由于你想丢掉最多4个有效位,你实际上是以模2**60为模。因此,要计算结果字符串中01的数量,使用@ShrikantShete的思想来使用格式函数,您可以在一行中完成所有操作:

''.join(format(n%2**60,'060b') for n in nums).count('01')