第十五章 程序设计基本概念.docxVIP

  • 1
  • 0
  • 约2.19千字
  • 约 3页
  • 2024-03-19 发布于上海
  • 举报

当前讲授

一、位逻辑运算符

名称 运算符

第十五章程序设计基本概念

对象数与位置 运算规则

优先级

结合性

位非 ~

单目前缀 ~1为0 ~0为1

14

自右向左

位与

8

位或 │

双目中缀 参见表3_13

6

自左向右

按位异或 ^

7

双目位逻辑运算符运算规则

a

b

ab

a|b

a^b

0

0

0

0

0

0

1

0

1

1

1

0

0

1

1

1

1

1

1

0

历年真题

有以下程序#include“stdio.h”main()

{inta=1,b=2,c=3,x;x=(a^b)c;printf(%d\n,x);

}

程序的运行结果是( )。

A.0 B.1 C.2 D.3

隐藏答案

【答案】D

【解析】(a^b)c=(1^2)3=(^)=

2 2 2 2

==3,则x的值为3,程序运行的结果为3,故应该选择D。

2 2

有以下程序main()

{intx=3,y=2,z=1;printf(%d\n,x/y~z);

}

程序运行后的输出结果是( )。

A.3 B.2 C.1 D.0

隐藏答案

【答案】D

【解析】按位与运算符“”参加运算的两个数据,按二进制位进行“与”运算,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。取反运算符“~”,用来对一个二进制按位取反,即将0变1,1变0。在表达式x/y~z中的三个运算符的优先级顺序为:“~”优先于“/”,“/”优先于“”。x/y~z=3/2~1=3/2~=3/2

2 2

=1===0最后输出的结果为0,所以,

2 2 2 2

选项D正确。

二、位移位运算符

位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。

名称 运算符

对象数与位置

运算规则

优先级

结合性

左移

右移

双目中缀

ab,a向左移b位ab,a向右移b位

11

自左向右

11

无符号数和带符号数左移:

说明:左移时,若左端移出的部分不包含有效二进制数1,则每左移一位,相当于移位对象乘以2。某些情况下,可以利用左移的这一特性代替乘法运算,以加快运算速度。如果左端移出的部分包含有效二进制数1,这一特性就不适用了。

说明:右移时,若右端移出的部分不包含有效数字1,则每右移一位相当于移位对象除以2。

历年真题

设有以下语句inta=1,b=2,c;c=a^(b2);

执行后,c的值为( )。

A.6 B.7 C.8 D.9

隐藏答案

【答案】D

【解析】题中的表达式b2意思是将b的二进制位往左移动2位。b2=22=

=,c=a^(b2)=1^ =

2 2 2

^(0000l000)=(=9。故应该选择D。

2 2 2

三、位扩展赋值运算符

位与赋值位异或赋值位右移赋值

=

^=

=

双目中缀

a=b相当于a=a(b)a^=b相当于a=a^(b)a=b相当于a=a(b)

自右向左

历年真题

有以下程序

main()

{unsignedchara=2,b=4,c=5,d;d=a|b; d=c;printf(“%d\n”,d);}

程序运行后的输出结果是()。

A.3 B.4 C.5 D.6

隐藏答案

【答案】B

【解析】a|b=2|4=|==6。则d的值为6。运算符“=”

2 2 2

是位与赋,值表达式d=c相当于d=dc,dc=65===4,

2 2 2

则d的值变为4,所以最后输出结果为4,故应该选择B。

四、位数不同的运算数之间的运算规则

位运算的对象可以是整型(longint或int或short)和字符型(char)数据。当两个运算数类型不同时位数亦会不同。遇到这种情况,系统将自动进行如下处理:

先将两个运算数右端对齐。

再将位数短的一个运算数往高位扩充,即:无符号数和正整数左侧用O补全,负数左侧用1补全,然后对位数相等的这两个运算数按位进行位运算。

【例】设变量定义如下:unsignedshorta=13;charc=‘a’,求表达式a^c的值。

【解

文档评论(0)

1亿VIP精品文档

相关文档