C Primer Plus(第6版)第十五章复习题答案

本文深入探讨了二进制位操作的原理,包括位移、掩码使用及位运算符的特性。通过实例展示了不同数据结构中位字段的布局,如tb_drives和kb_drives结构体,揭示了位字段在存储效率上的优势。此外,文章还对比了不同位操作指令的效果,强调了在特定场景下选择合适操作的重要性。
a. 0000 0011
b. 0000 1101
c. 0011 1011
d. 01110111
a. 21,  025,  0x15
b. 85,  0125, 0x55
c. 76,  0114, 0x4c
d. 157, 0235, 0x9D
a. 252
b. 2
c. 7
d. 7
e. 5
f. 3
g. 28
a. 255
b. 1 (not false is true)
c. 0
d. 1 (true and true is true)
e. 6
f. 1 (true or true is true)
g. 40
掩码的二进制是 111 1111, 十进制是127, 八进制是 0177, 十六进制是0x7F

bitval * 2 和 bitval << 1 都把bitval当前的值增加一倍, 它们是等效的。
但是mask += bitval和 mask != bitval 只有在bitval和mask没有同时打开的位时效果才相同。
例如, 2 | 4 得 6, 3 | 6得 7

a.
struct tb_drives
{
	unsigned int diskdrives  : 2;
	unsigned int             : 1;
	unsigned int cdromdrives : 2;
	unsigned int             : 1;
	unsigned int harddrives  : 2;
}

b.
struct kb_drives
{
	unsigned int harddrives  : 2;
	unsigned int             : 1;
	unsigned int cdromdrives : 2;
	unsigned int             : 1;
	unsigned int diskdrives  : 2;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值