Appearance
题目
HDLC 协议采用零比特填充法,对数据 01111100 01111110 进行组帧后对应的比特串为( )
错因
B
可能把"5 个连续 1 后插入 0"错记为"6 个连续 1 后插入 0"——只在第 6 位之后插入 0 而不是第 5 位连 1 之后立即插。这种错算下原始的第 6 位之后才插,结果与正确答案完全错位。错的根源:填充规则的位置算错。
C
C 与 A 形式上相同(疑为骨架抄录笔误,实际命题方原题 A 与 C 应有细微差别)——若按正确填充得到的就是这个比特串。
D
D 与 B 形式上相同(同样疑为骨架抄录笔误)——若属于"位置错算到第 6 位"的错误填法。
总解析
第一步:明确 HDLC 零比特填充规则
HDLC 用 01111110(6 个 1 包夹 2 个 0)作为帧首尾标志(flag)。为避免数据中出现 5 个以上连续的 1 误被识别成标志,发送方在发送数据时:
遇到连续 5 个 1,强制在第 5 个 1 后面插入一个 0——无论第 6 位原本是 0 还是 1。
接收方做反向操作:每收到 5 个连续 1 后看下一位,若是 0 则丢弃(这是填充位)、若是 1 则可能是帧标志或错误。
第二步:逐位扫描原始数据 01111100 01111110
把 16 位数据展开 + 维护"连 1 计数器":
| 位序 | 位值 | 连 1 计数 | 输出 | 注释 |
|---|---|---|---|---|
| 1 | 0 | 0 | 0 | |
| 2 | 1 | 1 | 1 | |
| 3 | 1 | 2 | 1 | |
| 4 | 1 | 3 | 1 | |
| 5 | 1 | 4 | 1 | |
| 6 | 1 | 5 | 1 | 触发插入 0,重置计数 |
| — | — | 0 | 0 | (插入位) |
| 7 | 0 | 0 | 0 | 重置后正常输出 |
| 8 | 0 | 0 | 0 | |
| 9 | 0 | 0 | 0 | |
| 10 | 1 | 1 | 1 | |
| 11 | 1 | 2 | 1 | |
| 12 | 1 | 3 | 1 | |
| 13 | 1 | 4 | 1 | |
| 14 | 1 | 5 | 1 | 触发插入 0,重置计数 |
| — | — | 0 | 0 | (插入位) |
| 15 | 1 | 1 | 1 | |
| 16 | 0 | 0 | 0 |
第三步:组合输出
输出比特序列:0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 0(共 18 位 = 16 数据位 + 2 填充位)
按 8 位分组:
01111100 00111110 10第四步:核对
最终答案是 A(01111100 00111110 10)。
编者注(生僻术语):HDLC 的"零比特填充"是一种透明传输机制——保证任意数据流都能被无歧义地嵌入帧中。
接收方反向操作:每看到 5 个连 1 后下一位,如果是 0 则丢弃这个 0(视为填充位);如果是 1 再下一位是 0,则识别为帧标志
01111110;如果连续 7+ 个 1,则识别为终止符或错误。HDLC 物理上能传任意比特流的奥秘就在这条规则上。题面 A 与 C、B 与 D 形式上重复属于本题骨架抄录笔误(408 真题原题选项应有细微差别),按推导得到的正确比特串与 A 一致,故答案选 A。