怎么做
- 题面里的虚线方框就是要填的空
- 点候选项,它会填进当前高亮的那个空
- 点已填好的空,可以把选项取回来重选
- 全部填满后「提交」才会亮起
卡住了就点右下角的 👩🏫 问 AI 老师,她会给提示但不直接给答案。
十进制、二进制与按位与或异或
按位与:两个数右对齐,一列一列算,同一列都是 1 才得 1
a = 6
b = 3
a & b
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
计算机里的整数都是用二进制存的:只有 0 和 1,从右往左每一位分别代表 1、2、4、8、16……。比如 13 = 8 + 4 + 1,写成二进制是 1101。
十进制转二进制:不停地除以 2、记下余数,最后倒着读。13 → 余 1,6 → 余 0,3 → 余 1,1 → 余 1,倒着读就是 1101。
C 语言有四个「按位」算的运算符。先把数写成二进制、右边对齐,再一列一列地算:
&按位与:这一列两个都是 1 才得 1;|按位或:有一个是 1 就得 1;^按位异或:两个不一样得 1,一样得 0;~按位取反:只跟一个数,每一位 0 变 1、1 变 0(下一题细说)。
注意 & 和第 ② 条路线学的 &&(逻辑与)不是一回事:&& 的结果只有 0 或 1。
做位运算时常用 unsigned int(无符号整数):它只存非负数,输出用 %u,不会冒出负数,最省心。
#include <stdio.h>
int main(void)
{
unsigned int a = 12, b = 10; /* 二进制 1100 和 1010 */
printf("%u %u %u\n", a & b, a | b, a ^ b);
return 0;
}
程序输出的三个数依次是【0】、【1】、【2】。
请登录后作答。
去登录
👩🏫
AI
💬 题目评论
🔒
登录并作答后可看讨论