📝 我的笔记

还没有笔记

选中页面文字后点击「高亮」按钮添加

Q6

📜 原文
📖 逐步解释
∑ 公式拆解
💡 数值示例
⚠️ 易错点
📝 总结
🎯 存在目的
🧠 直觉心智模型
💭 直观想象

1prompt

please take a deep breath, think step by step,请扮演一位FUNDAMENTALS OF COMPUTER SYSTS的计算机专家,用详细的中文step by step地解释并回答以下双引号中的问题,名词请附上对应的英文:

让我们慢慢来,能否用详细的中文和清晰的符号表示给出题目中的从零基础的一步一步的概念解释:

能否用详细的中文和清晰的符号表示给出从零基础的一步一步的详细解题步骤,特别是看到什么的时候能够判断什么的推理链:

可以用精确的数学符号和数学表达式来展示细致严谨的推理逻辑链吗?从题目中的什么条件判断出什么,又因为什么公式推导出答案?

1. Q6

6. 下面是一个3位字长的“奇怪”编码,它只编码0和素数值。假设我们要求一台3位计算机将所有可能的值对相加并返回结果(当然,使用相同的编码)。指出哪些数对相加会产生溢出

位序列
000 0
001 1
010 2
011 3
100 5
101 7
110 11
111 13

2A

下面我按“从零基础 → 建模 → 判定规则 → 枚举结果”的顺序,把这道题完整拆开(并在每个关键名词后面给出对应英文)。


11) 题目在说什么

你有一台 3位字长word size)的计算机computer)。它的位序列bit pattern / bit sequence)不是普通的二进制数值,而是用下面这个“奇怪”的 编码encoding)来表示某些value):

$$ \textbf{编码表}:\quad 000!\to!0,; 001!\to!1,; 010!\to!2,; 011!\to!3,; 100!\to!5,; 101!\to!7,; 110!\to!11,; 111!\to!13 $$

也就是说,这台机器machine)能“表示”的数值集合set of representable values)只有:

$$ S={0,1,2,3,5,7,11,13} $$

题目要求:把所有可能的值对pair of values)相加,并“返回结果(仍用同一套编码)”。问哪些数对pairs)会产生 溢出overflow)。


22) 什么叫溢出(在这题里)

在这题里,溢出overflow)不是“超过 (2^3-1=7)”那种普通二进制意义的溢出,因为这根本不是普通二进制。

这里的溢出判定overflow criterion)是:

两个可表示的 $a,b\in S$ 相加得到 $a+b$

如果 $a+b\in S$,则结果可编码representable / encodable),不溢出;

如果 $a+b\notin S$,则结果不可编码not representable),这次加法就溢出

符号notation)写就是:

$$ \text{Overflow}(a,b)\iff (a\in S)\land(b\in S)\land(a+b\notin S) $$


33) 先找“不溢出”的情况(更快)

因为 (S) 很小,我们先列出哪些sum)是允许的:

允许的结果只能是 $S=\{0,1,2,3,5,7,11,13\}$

3. 1 任何和 0 相加都不溢出

对任意 $x\in S$

$$ 0+x=x\in S $$

所以所有包含 $0$数对不溢出

3. 2 其它能凑出集合 (S) 的和

我们再找 $a,b\in S$(不含 0 的也行)能让 $a+b$ 仍落在 $S$

除此之外,你会发现基本都掉到 $4,6,8,9,10,12,14,\dots$ 这些不在 $S$ 的值里,于是就溢出。


44) 最终答案:哪些数对会溢出

下面我按“无序数对unordered pairs,即 $a\le b$)”列出所有会溢出overflow)的情况;如果你需要“有序数对ordered pairs)”,把每一对再交换一次顺序即可(因为加法交换律commutativity))。

4. 1 会溢出的无序数对(a≤b)

$$ \begin{aligned} &(1,3),(1,5),(1,7),(1,11),(1,13),\ &(2,2),(2,7),(2,13),\ &(3,3),(3,5),(3,7),(3,11),(3,13),\ &(5,5),(5,7),(5,11),(5,13),\ &(7,7),(7,11),(7,13),\ &(11,11),(11,13),\ &(13,13) \end{aligned} $$

4. 2 对照一下:不溢出的无序数对(帮助你自检)

不溢出当且仅当和仍在 (S)。无序情形下,不溢出只有:

除这些以外的所有数对都溢出。


55) 如果你想用位序列来写(可选)

用题目给的编码表encoding table)把上面的值对换成位序列对即可,比如:

如果你希望我把“所有溢出的位序列对(例如 $001+011$ 这种)”也完整列成清单,我也可以按同样规则直接枚举出来(只是会更长)。