我想知道是否可以将一个数字表示为一系列位,每个位具有大致相同的意义,这样如果我们翻转其中一个位,整体值不会发生太大变化。
例如,我们可以使用 4 位序列,其中每组代表一个从 0 到 15 的值,而整体值是所有这些值的总和。
0110 0101 1101 1010 1011 → 6 + 5 + 13 + 10 + 11 = 45
现在翻转任何位只能导致最终值的最大差异为 8。
这种方法显然存在一些缺点:
- 值有多种表示形式,其中一些值比其他值具有更多的表示形式(例如,数字 38 有 39280 种不同的表示形式,而数字 0 则只有 1 种);
- 可以表示的值的数量大大减少(这种表示允许从 0 到 75 的整数,而 20 位通常可以表示 2 20到100 万个不同的整数)。
我能找到关于这个问题的任何资源吗?我似乎无法在网上找到任何东西,但也许我没有使用正确的关键字进行搜索。我的方法还有哪些其他选择?他们改善了它的缺点吗?