作为一个有趣的实验,我正在寻找自然数的二进制表示,其中log2
的实现最简单。这是我提出的编码:
data N = A N | B N | E
其中:
1 E
2 (A E)
3 (B E)
4 (A (A E))
5 (A (B E))
6 (B (A E))
7 (B (B E))
8 (A (A (A E)))
9 (A (A (B E)))
10 (A (B (A E)))
11 (A (B (B E)))
12 (B (A (A E)))
13 (B (A (B E)))
14 (B (B (A E)))
15 (B (B (B E)))
16 (A (A (A (A E))))
这使得log2
变得微不足道:您只计算A
和B
的数量!在该编码上,通常的“全加器”算法不再起作用。有没有简单的算法可以将两个N的数量相加?