GESP 三级 · GESP202609 C++ 三级 第 10 题

选择题 · 答案 A · 考点:位运算

← 整套速查表 GESP 三级 全部真题

题目

下面的程序是位掩码技术实现权限的组合管理。首先定义四个权限常量,分别对应读、写、修改、删除, 每个权限占用整数的一个独立二进制位。初始化权限掩码 mask 为 0 ,代表没有任何权限。如果想实现如下的操 作:添加读权限;添加写权限;清除读权限,其他位不变;添加删除权限。则横线处应该填入的是(  )。

#include <iostream>
using namespace std;
int main() {
const int READ = 1 << 0;
const int WRITE = 1 << 1;
const int MODIFY = 1 << 2;
const int DELETE_ = 1 << 3;
int mask = 0;
__________________________
return 0;
}

A.

mask = mask | READ;
mask = mask | WRITE;
mask = mask & (~READ);
mask = mask | DELETE_;

B.

mask = mask & READ;
mask = mask & WRITE;
mask = mask | (~READ);
mask = mask & DELETE_;

C.

mask = mask | READ;
mask = mask & WRITE;
mask = mask & (~READ);
mask = mask | DELETE_;

D.

mask = mask | READ;
mask = mask | WRITE;
mask = mask | (~READ);
mask = mask | DELETE_;
答案:A

考点

位运算 讲解 →位运算 真题汇总 →

解题思维

位掩码操作:加权限用|,清权限用&(~x)

常见错误

误用|(~x)会翻转其他位;误用&会清空权限

详细解析(节选)

考点:位运算|权限掩码

解析

初始 mask=0(0000)。按题意:加读(|READ)、加写(|WRITE)、清读(&(~READ))、加删(|DELETE_),最终得 1010(写+删)。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断