我正在阅读《计算机系统:程序员的视角》,但我不明白为什么位向量 a = [01101001] 编码集 A = {0, 3, 5, 6}?
我做了一些谷歌搜索,但没有找到任何有用的东西。我还尝试过 ChatGPT 和此视频:https://www.youtube.com/watch?v=SYoJ6gUXZvc。不过,我还没弄清楚......也许在弄清楚这个问题时存在一些隐藏的先决条件,比如离散数学?
编码是“我们”在计算机世界和非计算机世界之间进行转换时做出的选择。
例如,在一个关于光的项目中,
0
可能意味着daytime
,而1
可能意味着night time
。在该项目的背景下,这将是这些概念的有效编码。
在您的示例中,上下文是关于整数集的。
一种“自然”编码是拥有位集的每一位
set
(如果相应的索引存在于该集合中)。那么关于顺序有 2 个同样自然的“选择”。
一种方法是对位进行索引:[0, 1, 2, 3, 4, 5, 6, 7, ...]。 另一种是将它们索引为 [7, 6, 5, 4, 3, 2, 1, 0]。 请注意,如果使用第二种方案,设置
{0, 3, 5, 6}
的位会产生 [01101001]
,即您的确切数据。
这纯粹是一种选择,尽管是一种相当“自然”的选择。根据上下文和想要对集合执行的操作,不同的编码选择可能会变得更好。