我想在5760个二进制位中计算'01'序列。
首先,我想组合几个二进制数,然后计算'01'次数。
例如,我有64位整数。说,6291456。然后我将其转换为二进制。不使用最重要的4位。所以我将获得60位二进制000 ... 000011000000000000000000000 然后我需要组合(只是将位放在一起因为我只需要计数'01')前60位+后60位+ ...所以60位中的96位被拼接在一起。
最后,我想知道有多少'01'出现。
s = binToString(5760 binary bits)
cnt = s.count('01');
答案 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')