数制
- 位权
- 二进制 2k,八进制 8k,十六进制 16k
- 转为十进制
- Σ dk·bk
- 从十进制转换
- 除以基数,余数从下往上读
- 十六进制 ↔ 二进制
- 一位十六进制数 = 4 位二进制
- 二进制补码
- 按位取反后加 1
公式表、每个专题的关键方法步骤和 20 道练习题,完整解答附在最后。
8 位模式 1011 1111 以补码形式存储一个有符号整数。它的十进制值 N 是多少?
把各位设置为 1010 1001 XOR 1011 0111 的 8 位结果。该结果的十进制值 R 是多少?
你想用逆否证明来证明 a → (b ∧ c)。你要改为证明哪个蕴涵?点选它。
已知前提 q → r; q。由它们可以推出哪个结论?点选它。
用卡诺图求 F(A, B, C, D) = Σm(1, 2, 4, 6, 7, 11, 12, 13) 的最简和之积 (POS) 形式。它有多少个和项(因子)N?
对于 F(A, B, C, D) = Σm(0, 1, 7, 9, 13) + d(4, 11)(其中 d 表示无关项),求必要质蕴涵项的个数 N。
求 27 模 32 的逆元:满足 0 < x < 32 且 27·x ≡ 1 (mod 32) 的数 x。
某个 RSA 密钥使用素数 p = 7 和 q = 41,公钥指数 e = 7。求私钥指数 d(0 < d < φ(n))。
在无权图上进行广度优先搜索(BFS)可以求出:
为什么当某些边权为负时,Dijkstra 算法可能给出错误结果?
一个道路网络有 100,000 个路口,每个路口大约与另外 4 个路口相连。哪种表示方法最合适?
一个动态数组在满时容量翻倍。为什么许多实现只在它只有四分之一满时才缩容,而不是一半满时?
一个连通图有 12 个顶点和 22 条边。必须去掉多少条边 k 才能剩下一棵生成树?
长度为 2 且起点和终点都是 B 的闭途径有多少条?途径可以重复顶点和边。把这个数记作 N。
第三范式(3NF)消除了:
EXPLAIN(或 PostgreSQL 中的 EXPLAIN ANALYZE)对一个查询显示什么?
浏览器收到 HTTP 状态码 404。这是什么意思?
下列哪个地址是公网(而非 RFC 1918 私有)IPv4 地址?
一个子网使用掩码 255.255.255.192。它有多少个可用主机地址 H?
一台路由器有到以下网络的路由:10.175.27.0/24, 10.175.28.0/24, 10.175.29.0/24, 10.175.30.0/24, 10.175.31.0/24, 10.175.32.0/24。能覆盖所有这些网络的单条汇总路由,其最长前缀长度 p 是多少?
答案: N = −65
位置计数制:每个数位的值等于该数字乘以基数的某次幂。二进制各位的权为 1、2、4、8、16、……;十六进制为 1、16、256、……,A–F 代表 10–15。在 8 位补码中,最左边一位的权是 −128 而不是 +128,负数就是这样存储的。
其余各位保持正常的正权值。
答案: R = 30
设置比特位:每一位对应 2 的一个幂(128、64、…、1)。一个十六进制数字恰好是四位,在 8 位补码中最左边的位权重为 −128。按位运算对每个位位置分别进行。
XOR 在两位不同时得 1。
答案: ¬(b ∧ c) → ¬a
逻辑等价:两个公式在真值表的每一行取值都相同时,它们是等价(≡)的。重言式在每一行都为 1,矛盾式在每一行都为 0,偶然式则两者都不是。常用定律:德摩根律,¬(a ∧ b) ≡ ¬a ∨ ¬b 和 ¬(a ∨ b) ≡ ¬a ∧ ¬b;a → b ≡ ¬a ∨ b ≡ ¬b → ¬a(逆否命题);¬(a → b) ≡ a ∧ ¬b;以及分配律,a ∨ (b ∧ c) ≡ (a ∨ b) ∧ (a ∨ c)。
逆否命题与原命题等价,所以证明了它就证明了原命题。
答案: r
量词与论证:¬∀x P(x) ≡ ∃x ¬P(x),¬∃x P(x) ≡ ∀x ¬P(x)。把否定向内移动,交换它经过的每个量词,并用命题逻辑的定律否定内部的公式,例如 ¬(a → b) ≡ a ∧ ¬b。当所有前提为 1 的每一行中结论也为 1 时,论证是有效的。只要有一行前提为真而结论为假,它就是反例,说明论证无效。
答案: N = 6
卡诺图:各格按格雷码(00, 01, 11, 10)排列,所以相邻的格子(包括跨越边界的格子)恰好只有一个变量不同。把 1 圈成由 1、2、4、8 或 16 个格子组成的矩形,圈尽可能大、尽可能少,直到每个 1 都被覆盖。每个圈对应一个乘积项:圈内保持不变的变量。由 2ᵏ 个格子组成的圈会消去 k 个变量。无关项 (X) 可用来使圈变大,但不必被覆盖。改为圈 0 则得到最简 POS 形式。
每个圈都是由 2ᵏ 个格子组成的矩形;边上的格子与对边上的格子相邻。
还存在另一种大小相同的圈法;它的项数和文字数相同。
答案: N = 2
卡诺图:各格按格雷码(00, 01, 11, 10)排列,所以相邻的格子(包括跨越边界的格子)恰好只有一个变量不同。把 1 圈成由 1、2、4、8 或 16 个格子组成的矩形,圈尽可能大、尽可能少,直到每个 1 都被覆盖。每个圈对应一个乘积项:圈内保持不变的变量。由 2ᵏ 个格子组成的圈会消去 k 个变量。无关项 (X) 可用来使圈变大,但不必被覆盖。改为圈 0 则得到最简 POS 形式。
由 1 和 X 能够构成的最大的圈。
答案: 27−1 mod 32 = 19
逆元与同余式:a 模 n 有逆元,当且仅当 gcd(a, n) = 1。扩展欧几里得算法把 1 写成 s·n + t·a,于是 a⁻¹ ≡ t (mod n)。当 gcd(a, n) = 1 时,同余式 a·x ≡ b (mod n) 的解为 x ≡ a⁻¹·b。模数互素的两个同余式 x ≡ r₁ (mod m₁) 和 x ≡ r₂ (mod m₂) 在模 m₁·m₂ 下有唯一解(中国剩余定理)。欧拉函数 φ(n) 表示 1 到 n 中与 n 互素的数的个数:φ(n) = n·∏(1 − 1/p)。
每个余数 r 都写成 r ≡ t·27 (mod 32)。
答案: d = 103
模幂与 RSA:用反复平方法计算 aᵏ mod n:把 k 写成二进制,平方,每一步之后取模,并把对应二进制位为 1 的幂相乘。费马:对不整除 a 的素数 p,aᵖ⁻¹ ≡ 1 (mod p),所以指数可以对 p − 1 取模。RSA:选取素数 p 和 q,n = p·q,φ(n) = (p − 1)(q − 1);公钥指数 e 与 φ(n) 互素,私钥指数为 d = e⁻¹ mod φ(n)。用 c = mᵉ mod n 加密,用 m = cᵈ mod n 解密。
答案: D · 从起始节点出发、按边数计的最短路径
BFS 按照与源点的距离(边数)顺序访问节点,因此能在 O(V + E) 内求出无权最短路径。
答案: D · 顶点被取出时距离就被确定,但之后的负权边仍可能给它一条更短的路径
贪心步骤依赖于非负权重,才能保证取出的距离是最终值;权重可能为负时应使用 Bellman–Ford。
答案: D · 邻接表
矩阵需要 1010 个单元,几乎全是空的;邻接表只存储大约 400,000 个边表项。
答案: A · 为了避免在边界附近交替进行 push 和 pop 时反复调整大小
在一半满时缩容,可能使这样的操作序列中每次操作都触发一次调整大小;1/4 与满之间的间隔使均摊代价保持在 O(1)。
答案: k = 11
欧拉、哈密顿与树:连通图在每个顶点度数都为偶数时有欧拉回路(每条边经过一次,回到起点),在恰有两个顶点度数为奇数时有不是回路的欧拉通路;此时通路从一个奇度顶点走到另一个奇度顶点。哈密顿回路恰好经过每个顶点一次;Kn 有 (n − 1)!/2 条。n 个顶点的树有 n − 1 条边,有 m 条边的连通图在去掉 m − n + 1 条边后保留一棵生成树。
答案: N = 4
度:顶点的度是与它相连的边的条数。每条边有两个端点,所以度数之和等于边数的两倍:Σ deg(v) = 2|E|(握手引理)。因此奇度顶点的个数是偶数。Kn 有 n(n − 1)/2 条边,n 个顶点的 k-正则图有 nk/2 条边,n 个顶点的树有 n − 1 条边。
答案: C · 非键属性之间的传递依赖
在 3NF 中,没有非键属性依赖于另一个非键属性,例如同时存储城市和邮政编码,而城市依赖于邮政编码。
答案: D · 优化器选择的执行计划,例如扫描方式和连接方法
EXPLAIN 显示执行计划(索引扫描或顺序扫描、连接算法、估计代价);EXPLAIN ANALYZE 还会实际运行查询并报告实际耗时。
答案: B · 找不到所请求的资源
404 Not Found 表示服务器在该 URL 上没有资源。200 是 OK,401 是 Unauthorized,500 是 Internal Server Error。
答案: C · 172.32.0.1
172.16.0.0/12 的范围是 172.16.0.0 到 172.31.255.255,所以 172.32.0.1 在此范围之外。其他三个都在私有地址范围内。
答案: H = 62
IPv4 subnetting: an address has 32 bits. The prefix /p says how many leading bits identify the network; the remaining 32 − p bits number the hosts. A subnet has 2³²⁻ᵖ addresses, but the first (network address) and last (broadcast address) cannot be given to hosts, so 2³²⁻ᵖ − 2 hosts fit. Exceptions: a /31 (point-to-point link, RFC 3021) uses both of its 2 addresses for hosts, and a /32 is one single address (a single host or a loopback).
答案: p = 18
路由汇总:汇总路由 a.b.c.0/p 覆盖前 p 位相同的所有网络。把第一个和最后一个网络中不同的那个八位组写成二进制;相同的前导位数加上它前面各八位组的位数,就是最长的汇总前缀。
汇总路由:10.175.0.0/18 (它还覆盖了列表中没有的 58 个网络)。
ExamProblems · examproblems.com/courses/computer-science-fundamentals