怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

移位:乘除 2 的幂

👁️ 28 人浏览 💬 0 人评论 ❤️ 添加收藏

x << 1:每一位往左挪一格,右边补 0

x

0

0

0

1

0

1

1

0

0

0001 0110 = 22

0010 1100 = 44,正好 ×2

x << n:把 x 的二进制整体左移 n 位,右边补 0。每左移 1 位数值 ×2,所以 x << n 等于 x × 2ⁿ。

x >> n:整体右移 n 位,最右边的 n 位直接丢掉。对非负数(或 unsigned),每右移 1 位就是 ÷2 再去掉小数,x >> n 等于 x / 2ⁿ(整除)。负数右移的结果和编译器有关,不用管它。

最常用的一个:1 << k 就是「只有第 k 位是 1」的数。位从右往左数,最右边是第 0 位。

#include <stdio.h>

int main(void)
{
    unsigned int a = 13;   /* 二进制 1101 */
    printf("%u %u %u\n", a << 2, a >> 1, 1u << 5);
    return 0;
}

程序输出的三个数依次是【0】、【1】、【2】。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论