25-复习题
15.8 复习题
复习题的参考答案在附录A中。
1.把下面的十进制转换为二进制:
a. 3
b. 13
c. 59
d. 119
2.将下面的二进制值转换为十进制、八进制和十六进制的形式:
a. 00010101
b. 01010101
c. 01001100
d. 10011101
3.对下面的表达式求值,假设每个值都为8位:
a.~ 3
b. 3 & 6
c. 3 | 6
d. 1 | 6
e. 3 ^ 6
f. 7 >> 1
g. 7 << 2
4.对下面的表达式求值,假设每个值都为8位:
a.~ 0
b. !0
c. 2 & 4
d. 2 && 4
e. 2 | 4
f. 2 || 4
g. 5 << 3
5.因为 ASCII
码只使用最后7位,所以有时需要用掩码关闭其他位,其相应的二进制掩码是什么?分别用十进制、八进制和十六进制来表示这个掩码。
6.程序清单15.2中,可以把下面的代码:
while (bits-- > 0)
{
mask |= bitval;
bitval <<= 1;
}
替换成:
while (bits-- > 0)
{
mask += bitval;
bitval *= 2;
}
程序照常工作。这是否意味着 *=2
等同于 <<=1
? +=
是否等同于 |=
?
7.a.Tinkerbell计算机有一个硬件字节可读入程序。该字节包含以下信息:
| 位 | 含义 |
| :----- | :----- | :----- | :----- |
| 0
~ 1
| 1.4MB软盘驱动器的数量 |
| 2
| 未使用 |
| 3
~ 4
| CD-ROM驱动器数量 |
| 5
| 未使用 |
| 6
~ 7
| 硬盘驱动器数量 |
Tinkerbell和IBM PC一样,从右往左填充结构位字段。创建一个适合存放这些信息的位字段模板。
b.Klinkerbell与Tinkerbell类似,但是它从左往右填充结构位字段。请为Klinkerbell创建一个相应的位字段模板。