变式 3:转成十六进制

十六进制每一位是 0~9 和 A~F,正好对应 4 个二进制位:1010 1011 就是 AB。所以第 k 个十六进制位(从右往左、从 0 数)就是 (n >> (4 * k)) & 15。 输入一个 0~65535 的

开始练习 →

变式 4:楼栋号和楼层号拼成一个字节

宿舍门禁把「楼栋号 hi」和「楼层号 lo」(都是 0~15,各占 4 位)拼成一个字节:hi 放在高 4 位、lo 放在低 4 位。输入 hi lo,输出这个字节的值。例如输入 3 7,输出: 55 程序算出来的数大得离谱。运行后看画布:

开始练习 →

二级 · 程序填空:移位取出每一位

下面的程序输出 166 的 8 位二进制 10100110。请在【】处填入正确的内容。 #include <stdio.h> int main(void) { unsigned int n = 166; int

开始练习 →

二级 · 程序改错:2 的 k 次方

下面程序的功能是:输入非负整数 n 和 k(k 小于 20),第一行输出 2 的 k 次方,第二行输出 n 除以 2 的 k 次方的整数商。输入 50 2 时输出: 4 12 程序中有两处错误。请改正 found 下面一行中的错误,不要改动

开始练习 →

二级 · 选择:<< 和 + 谁先算

以下程序的输出是【0】 【1】。 #include <stdio.h> int main(void) { unsigned int a = 3; printf("%u %u\n", a &l

开始练习 →

二级 · 程序设计:fun 把 8 位倒过来

请编写函数 fun,它的功能是:把 0~255 的整数 n 的 8 位二进制首尾倒过来,返回得到的数。例如 n 为 6(00000110)时,倒过来是 01100000,函数返回: 96 注意:部分源程序已给出。请勿改动 main 函数,仅

开始练习 →

作品:用十根手指数到 1023

一根手指伸出算 1、弯下算 0,两只手 10 根手指就是 10 个二进制位,最多能数到 1023! 输入一个 0~1023 的整数 n,从左到右输出 10 根手指(最左边是第 9 位):伸出打 I,弯下打 .,左右手中间空一格。例如输入 2

开始练习 →

掩码:查、开、关、翻转

掩码 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

开始练习 →

关掉第 k 盏灯

宿舍 8 盏灯的状态存在 lights 里(0~255),第 k 位是 1 表示第 k 盏亮着。输入 lights 和 k,关掉第 k 盏灯、其他灯不动,输出新的 lights。例如输入 255 0,输出: 254 运行后看画布:从上到下是

开始练习 →

母题:第 k 盏灯亮着吗

还是那 8 盏灯。输入 lights 和 k,第 k 盏亮着输出「亮」,灭着输出「灭」。例如输入 255 6,输出: 亮 运行后看画布:从上到下是 lights、k、1u << k 的二进制。程序拿 lights 和谁按位与了?

开始练习 →