首页 > 解决方案 > 如何找到自定义二进制规则的编号?

问题描述

正如您在下面看到的,仅查找这种新型二进制代码的数字需要一种新方法。我可以一个一个地计算它们,但是如何正确地实现它仍然让我头疼。


以这个二进制代码为例。

1100

并使用以下方法检测它的号码:

0011 - #1

0101 - #2

0110 - #3

1001 - #4

1010 - #5

1100 - #6

因此 1100 是 '6'

然后我们创建一个 6 的新代码,但它的 1 更少(因此有更多的 0)!用户定义少了多少个 1。在此示例中,它是 1 减去 1。所以我们可以通过以下方式找到它:

000001

000010

000100

001000

010000

100000

因此 100000 是 '6'

此外,代码应该反向工作,通过用户定义带走 2 个 0 将 100000 变为 1100,然后代码添加 1 直到它工作。(用户只需将代码中的 1 更改为 0 即可反转代码功能。无需额外代码。)

代码的结尾有时需要填充。所有 1 前。1100-1111。

标签: pythonbinarybinary-data

解决方案


“二进制规则”的描述对我来说没有任何意义,但在第一条规则中,如果你只是忽略最后一个数字,那么它就是数字的简单二进制表示。在第二条规则中,它看起来只是将数字向左移动的函数,这与乘以 2 的幂相同(您可以使用该log2函数撤消):

% cat rules.py 
import math

bin1 = 0b1100
bin2 = 0b100000
print(bin1>>1)
print(math.log2(bin2)+1)

% python rules.py 
6
6.0

推荐阅读