如何将查找表存储在幻数中



我在这里看到了一些有趣的东西,说您可以将查找表存储为幻数。

我试过用蛮力找出这个神奇的数字,但是所有的结果都不正确。

如何为某个查找表找到正确的幻数?谢谢你。

正如那个回答的作者所说:

幻数将表存储为位串,n -th表项

n对应的数字(从末尾开始)

这里有一个非常简单的例子:

Entry   Value   Bit
-----   -----   ---
  0     True     1
  1     False    0
  2     False    0
  3     True     1
                 b  # needed to indicate
                 0  # 'binary number'

所以这个查找表的"幻数",从下往上读,是:

>>> 0b1001  # (1 * 8) + (0 * 4) + (0 * 2) + (1 * 1)
9

或者旋转它:

              3      2      1      0      | Entry
              True   False  False  True   | Value
0      b      1      0      0      1      | Bit    # -> 0b1001

在提取输出时,右移二进制运算符x >> yx中的所有位右移y位,截断最后的y位:

>>> for x in range(4):
        print(x, '0b{:04b}'.format(9>>x))

0 0b1001
1 0b0100
2 0b0010
3 0b0001

和按位与& 1告诉你最后一位的值。返回结果:

>>> for x in range(4):
    print(x, 9>>x&1)

0 1
1 0
2 0
3 1

另一个例子:

Entry   Value   Bit
-----   -----   ---
  0     True     1
  1     False    0
  2     True     1
  3     False    0
                 b  # needed to indicate
                 0  # 'binary number'

所以这个查找表的"幻数",从下往上读,是:

>>> 0b0101  # (0 * 8) + (1 * 4) + (0 * 2) + (1 * 1)
5

或者旋转它:

              3      2      1      0      | Entry
              False  True   False  True   | Value
0      b      0      1      0      1      | Bit    # -> 0b0101

相关内容

  • 没有找到相关文章

最新更新