变式 1:打开第 k 盏灯

输入 lights 和 k,打开第 k 盏灯(本来就亮着就保持亮),输出新状态的 8 位二进制。例如输入 16 2,输出: 00010100 程序用加法开灯,大部分时候是对的,可有时候会把别的灯也弄乱。

开始练习 →

变式 2:按开关翻转

每盏灯的开关是「按一下就切换」。第一行输入 lights 和按的次数 m,第二行输入每次按的是第几盏。输出最后状态的 8 位二进制。例如输入: 1 2 0 5 第 0 盏被按灭、第 5 盏被按亮,输出: 00100000

开始练习 →

变式 3:哪几盏灯变了

查寝前后各记了一次灯的状态 a、b。输入 a b,从小到大输出状态变了的灯的编号(空格隔开);一盏都没变就输出「无」。例如输入 12 10,输出: 1 2

开始练习 →

变式 4:从学号编码里取字段

某校把学号压缩成一个 16 位编码 c:高 4 位是学院号,中间 4 位是年级,低 8 位是班内序号。输入 c(十进制),输出学院号、年级、序号。例如输入 8965(二进制 0010 0011 0000 0101),输出: 2 3 5 取连

开始练习 →

二级 · 程序填空:|= &= ^=

下面的程序依次把 x 的第 0 位置 1、第 2 位清 0、第 3 位翻转,输出 11。请在【】处填入正确的内容。 #include <stdio.h> int main(void) { unsigned int x

开始练习 →

二级 · 程序改错:清位与置位

下面程序的功能是:输入非负整数 x 以及 k、j(都小于 16),把 x 的第 k 位清 0、再把第 j 位置 1,输出结果。输入 15 3 4 时输出: 23 程序中有两处错误。请改正 found 下面一行中的错误,不要改动其他地方,也不

开始练习 →

二级 · 选择:怎么判断第 3 位

设 x 是 unsigned int 变量。要判断 x 的第 3 位(最右边是第 0 位)是否为 1,应该用【0】是否不等于 0;要把 x 的最低位清 0、其他位不变,应该用【1】。

开始练习 →

二级 · 程序设计:fun 翻转低 k 位

请编写函数 fun,它的功能是:把 x 的低 k 位(第 0 位到第 k-1 位)全部翻转,其余位不变,返回结果(0 ≤ k ≤ 16)。例如 x 为 5(0101)、k 为 2 时,低 2 位 01 翻成 10,函数返回: 6 注意:部分

开始练习 →

作品:读懂 chmod 755

Linux 里 chmod 755 文件 的 755 其实是三组权限位:自己 / 同组 / 其他人各一个 0~7 的数,每个数是 3 个二进制位:4(100)是可读 r、2(010)是可写 w、1(001)是可执行 x。 输入一个三位数权限

开始练习 →

位运算的优先级陷阱

x & 1 == 0 到底先算哪个? x & 1 == 0 ① == 先算 ② 最后才算 & ~ > 算术 > << >> > 比大小 > == != > & > ^ > | > &a

开始练习 →