Appearance
题目
某文件系统中,针对每个文件,用户类别分为 4 类:安全管理员、文件主、文件主的伙伴、其他用户;访问权限分为 5 种:完全控制、执行、修改、读取、写入。若文件控制块中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为( )。
错因
A
只算了 5 种权限,漏了用户类别维度——5 种权限只能描述"一类人对该文件的权限",但题问的是"不同类别用户"对该文件的权限,每类用户都要单独 5 位。一类一类乘起来才完整。
B
把"4 类用户 + 5 种权限"误算成 4 + 5 = 9——加错了运算。每类用户都要独立的 5 位(每位代表一种权限是否拥有),4 类就是 4 × 5,不是 4 + 5。加法是把"维度数加"了,乘法才是"维度间组合"。
C
12 = 4 × 3,可能把 5 种权限误算成 3 种(漏了"执行""修改"等)。或者按 (4 类 + 4 类 + 4 类) 凑出 12——总之是数错了某一边。要严格按题面:4 类 × 5 种 = 20。
总解析
编码思路:每位代表"该用户类别对该文件是否拥有某项权限"。
- 用户类别有 4 类(安全管理员、文件主、文件主伙伴、其他用户)
- 权限种类有 5 种(完全控制、执行、修改、读取、写入)
每类用户独立编码:每类用 5 位记录"5 种权限分别有没有"。例如安全管理员可能是 11111(全有),其他用户可能是 00100(只有修改)。
总位数:
| 用户类别 | 占位 | 含义 |
|---|---|---|
| 安全管理员 | 5 位(如 11111) | 5 种权限分别 0/1 |
| 文件主 | 5 位(如 01111) | 5 种权限分别 0/1 |
| 文件主的伙伴 | 5 位(如 00110) | 5 种权限分别 0/1 |
| 其他用户 | 5 位(如 00010) | 5 种权限分别 0/1 |
| 合计 | 20 位 |
类比 Unix
rwxrwxrwx9 位(3 类用户 × 3 种权限)就是这种思路的简化版。本题扩展到 4 类 × 5 种 = 20 位。
最终答案是 D。