- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 10章位运算
10.1 典型考试题剖析
10.1.1 选择题
【例 1】整型变量
的表达式是 。
x 和
y 的值相等、且为非
0 值,则以下选项中,结果为零
A) x || y
B) x | y
C) x y
D) x ^ y
考点:位运算的性质。
分析:答案 A 是两个非 0 数进行或运算,得到一定为非 0 值。答案 B 是两个非 0 数进行按位或运算,得到的也一定是非 0 值。答案 C 是两个非
0 数进行按位与运算,结果可能为 0,也可能不为
的性质可知,一个数和本身进行异或运算的值一定是
答案: D
【例 2】以下程序的输出结果是 。
0。答案
0。
D根据位运算
main()
{ char x=040;
printf(%o\n,x1);}
A) 100
B) 80
C) 64
D) 32
考点:左移运算。
分析: 040 是八进制数,用二进制表示为左移 1 位后得到
001000000即 64,用八进制输出结果为 100。
答案: A
【例 3】在位运算中,操作数每左移
A) 操作数乘以 2 B) 操作数除以
1 位,相当于
2 C) 操作数乘以
。 16
D)
操作
数除以 16
考点:左移运算的性质。
分析:因为位运算的操作对象是整型数据,所以乘、除 2 的整数倍可以
用移位来实现, 左移 1 位相当乘以 2,右移 1 位相当于除以 2,用移位方
法作乘除运算速度快。
答案: A
【例 4】下面语句输出结果是 。
char a=7;
printf(%d,%d,~a,!a);
A) 0,8
B) 8,0
C) -8,0
D) 0,-8
考点:按位取反运算和非运算。
分析:此题考察逻辑反和按位取反的区别,求逻辑反时,只要 a≠0就按真算,即! a=0;按位取反时,为此值正好是-
的补码。
答案: C
【例 5】设有以下语句,则 z 的二进制值是 。
char x=3,y=12,z;
z=x^y2;
A )B)C)D)考点:位运算的优先级。
分析:由于移位运算符的优先级高于异或运算符,所以先计算 y2 的值为又知 x 的值为于是可得 z
【例
答案: A
6】执行以下程序的输出结果是
。
#include stdio.h
main()
{ unsigned short u;
short n;
u=024;n=-24;
printf(%d,%d,%d,%d\n,u2,u2,n2,n2);
}
A) 80,5,-80,-5 B) 80,5,-96,-6 C) 96,3,-96,-6 D)
96,6,-80,-5
考点:左移和右移位运算。
分析:本题考查含有八进制数的移位运算和负数的左、 右移位运算。 024 是八进制数, C语言中八进制数无负数。负数在机内是按补码存放的,
最高位是符号,“ 0”代表正,“ 1”代表负,其符号位可以像数字一样参加运算,左移相当于乘以 2,右移一位相当于除以 2 的规律仍然适用。答案: B
10.1.2 填空题
【例 1】已知 a 为 8 位二进制数,要想通过 a^b 运算使 a 的低 4 位变反,高
四位不变, b 的值应为 。
考点:按位异或运算的性质。
分析:根据按位异或运算的性质可知, 与 1 异或得到的结果与原来的数
为:
据相反,与 0 异或得到的结果与原来的数据相同。因此 a 只需要低四位
与 1 异或,高四位与 0 异或即可。
答案:【例 2】设有以下变量说明,则 a+(int)((int)b+c)(int)(b-c) 的值
。
int a=5;
float b=7.2,c=3.6;
考点:强制类型转换与位移操作。
分析:题目中的( int )=7, (int)((int)b+c)=10 ,a+10=15,又
(int)(b-c)=3 ,所以最后的算式为: 153。
【例
答案: 1
3】下面程序段实现不借助中间变量而交换
x 与
y 的值,请填空。
int x=6,y=7;
x=x^y;
y=
x=
【1】
【2】
;
;
考点:异或运算的性质。
分析:根据异或运算的性质知道, 进行三次按位异或运算操作可以交换两变量的值。
答案:【 1】 y^x 【2】x^y
10.2 自测练习与参考答案
10.2.1 选择题
1.若有运算符 , sizeof ,^,=,则它们按优先级由高到低的排列顺序
是 。
A) sizeof ,= ,,^ B) sizeof
文档评论(0)