python 上固定长度二进制数的二进制重合数
Number of binary coincidences on fix length binary numbers on python
所以我需要的是一个 python 函数来计算两个以二进制形式写入但具有固定的已知长度的数字上重合的二进制数。例如,如果 n = 8
是二进制长度,则:
a = 0011 0110
b = 0101 1111
--------------
c = 1001 0110 -> 4
应该得到 4
的结果。 c 上的每个 0
是非巧合,每个 1
表示巧合。因为c有4个1,所以结果是4.
我需要它尽可能快。
这是我认为非常有效的最终解决方案:
bin(a ^ b)[2:].zfill(n).count("0")
说明
逻辑是使用 xor 来获得巧合的数量。使用 XOR,我实际上得到了问题中完成的示例的逆,因为巧合意味着 0
而非巧合意味着 1
。所以我将不得不否定它,但在此之前我应该将数字设置为 n
因为答案实际上是 110 1001
所以我会得到 3 而不是 4 的响应。
所以我需要的是一个 python 函数来计算两个以二进制形式写入但具有固定的已知长度的数字上重合的二进制数。例如,如果 n = 8
是二进制长度,则:
a = 0011 0110
b = 0101 1111
--------------
c = 1001 0110 -> 4
应该得到 4
的结果。 c 上的每个 0
是非巧合,每个 1
表示巧合。因为c有4个1,所以结果是4.
我需要它尽可能快。
这是我认为非常有效的最终解决方案:
bin(a ^ b)[2:].zfill(n).count("0")
说明
逻辑是使用 xor 来获得巧合的数量。使用 XOR,我实际上得到了问题中完成的示例的逆,因为巧合意味着 0
而非巧合意味着 1
。所以我将不得不否定它,但在此之前我应该将数字设置为 n
因为答案实际上是 110 1001
所以我会得到 3 而不是 4 的响应。