3. 文件详解
Lab 2: Part 1 - convert.c
进制转换
使用位操作将整数转换为二进制字符串。
for(unsigned i = (1 << 31); i > 0; i /= 2) {
if(i & x) binary[k++] = '1';
else binary[k++] = '0';
}
关键技巧: i & x 检查 x 的第 i 位是否为 1。
Lab 2: Part 2 - twecho.c
参数复制与大写
双重 malloc: 先分配指针数组,再分配每个字符串。
while ((*t++ = toupper(*s++)) != 0);
习语: 同时复制和转换,直到遇到 '\0'。
Midterm 1 - rank.c
位掩码操作
return x | 0x12; // 设置第 1 位和第 4 位
0x12 = 00010010。OR 操作将这些位设置为 1。
| 输入 x | x (二进制) | 结果 |
|---|---|---|
| 2 | 0000 0010 | 18 (0001 0010) |
| 0 | 0000 0000 | 18 |