怎么做
- 题面里的虚线方框就是要填的空
- 点候选项,它会填进当前高亮的那个空
- 点已填好的空,可以把选项取回来重选
- 全部填满后「提交」才会亮起
卡住了就点右下角的 👩🏫 问 AI 老师,她会给提示但不直接给答案。
掩码:查、开、关、翻转
掩码 m 只有第 1 位是 1:只动这一列,其余列原样不动
x
0
1
1
0
0
1
0
0
m = 1<<1
0
0
0
0
0
0
1
0
x | m
0
1
1
0
0
1
1
0
x & ~m
0
1
1
0
0
1
0
0
x ^ m
0
1
1
0
0
1
1
0
想对 x 的第 k 位动手、又不碰别的位,先造一把「尺子」:m = 1u << k,它只有第 k 位是 1。这把尺子叫掩码。
- 查:
x & m不等于 0,说明第 k 位是 1; - 置 1:
x | m(和 1 或,一定变 1;和 0 或,不变); - 清 0:
x & ~m(~m 只有第 k 位是 0,和 0 与,一定变 0); - 翻转:
x ^ m(和 1 异或,0 变 1、1 变 0)。
和 += 一样,位运算也有复合赋值:x |= m 就是 x = x | m,还有 &=、^=、<<=、>>=。
#include <stdio.h>
int main(void)
{
unsigned int x = 90; /* 二进制 0101 1010 */
printf("%u ", x | (1u << 0));
printf("%u ", x & ~(1u << 3));
printf("%u\n", x ^ (1u << 7));
return 0;
}
程序输出的三个数依次是【0】、【1】、【2】。
请登录后作答。
去登录
👩🏫
AI
💬 题目评论
🔒
登录并作答后可看讨论