二进制
P: 1 表示启用,0 表示不启用。对应十进制是 1 和 0
M: 10 表示启用,00 表示不启用。对应十进制是 2 和 0
C: 100 表示启用,000 表示不启用。对应十进制是 4 和 0
PMC:000-111 的组合,对应十进制是 0-7
假设最初 P,M,C 三个表都是 0 。
现在启用 P,P 表状态变为 1,PMC 表的状态计算就是: pmcStatus | 1, PMC 状态变为 1, 代表只有 P 是启动的。
启用 M, M 表状态变为 10,更新 PMC 表的状态:pmcStatus | 10,PMC 状态变为 11,对应十进制为 3,代表 P 和 M 都是启动的。
启用 C,C 表状态变为 100,更新 PMC 表的状态:pmcStatus | 100,PMC 状态变为 111,对应十进制为 7,代表 P 、M 、C 都是启动的。
现在要禁用 M,运算就是 pmcStatus & (~10 ),也就是 111 & 101,PMC 结果为 101,代表 P 和 C 是启用的,M 是禁用的
发现没,其实 P,M,C 就像分别代表的读,写,删权限,PMC 就要用户,用户拥有哪些权限。
当然,上面说的是基于猜测你的业务逻辑,不对请自己忽略