C语言第2章人民邮电出版社张小东

C语言第2章人民邮电出版社张小东

ID:45034748

大小:892.00 KB

页数:59页

时间:2019-11-08

C语言第2章人民邮电出版社张小东_第1页
C语言第2章人民邮电出版社张小东_第2页
C语言第2章人民邮电出版社张小东_第3页
C语言第2章人民邮电出版社张小东_第4页
C语言第2章人民邮电出版社张小东_第5页
资源描述:

《C语言第2章人民邮电出版社张小东》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、所谓判定性问题(decisionproblem)就是提出一个问题,只需要给出「Yes」或「No」答案的问题第二章简单判定性问题求解2.1判定性问题及判定条件的描述关系运算符关系运算符含义操作数个数结合性>大于双目左结合>=大于或等于双目左结合<小于双目左结合<=小于或等于双目左结合==等于双目左结合!=不等于双目左结合赋值运算符关系运算符算术运算符优先级由低到高<、<=、>、>=的优先级相同==、!=的优先级相同<、<=、>、>=高于==、!=2.1判定性问题及判定条件的描述关系表达式表达式关系运算符表达式a+b>c-dx>3/2

2、'a'+(b>c)a!=(c==d)关系表达式的值是“真”和“假”,分别用“1”和“0”表示5>0的值为“真”,即为1(a=3)>(b=5)由于3>5不成立,故其值为假,即为02.1判定性问题及判定条件的描述逻辑运算符逻辑运算符含义操作数个数结合性&&与运算双目左结合

3、

4、或运算双目左结合!非运算单目右结合逻辑非关系运算符逻辑与逻辑或优先级由低到高a>b&&c>d等价于(a>b)&&(c>d)2.1判定性问题及判定条件的描述逻辑表达式表达式逻辑运算符表达式逻辑运算的值为“真”和“假”,分别用“1”和“0”表示A的取值B的取值A&&B

5、A

6、

7、B!A非0非0110非000100非0011000012.1判定性问题及判定条件的描述思考:当i=10、j=3、k=0时,i==1&&(j==3

8、

9、k=k+1)的运算次序是怎样的?表达式最终的值是多少呢?k值是多少?在处理逻辑表达式时应注意以下两点:(1)C语言编译系统在给出逻辑运算结果时,以0代表“假”,以1代表“真”。但在判断一个逻辑量“真假”时,以非0表示“真”,以0表示“假”。例如:当a=5.4,b=5,c=’a’时,!a,!b,!c的值均为“假”,即为0。a&&c的值为1,因为a和b均为非0。(2)在进行逻辑运算时

10、,逻辑表达式运算到其值完全确定时为止(短路运算)。例如:思考题中计算i==1&&(j==3

11、

12、k=k+1)时,由于i==1不成立,决定了整个表达式的值为0,因此(j==3

13、

14、k=k+1)就不在计算了,k的值还是0。2.1判定性问题及判定条件的描述位运算所谓位运算是指进行二进制位的运算。在系统软件中,常要处理二进制位的问题。C语言提供了按位运算的功能,这使得它与其它高级语言相比,具有很强的优越性。C语言提供了6种位运算符。类型运算符含义位逻辑运算符&按位与

15、按位或^按位异或~取反移位运算符<<左移>>右移说明:①运算量只能是整型或字

16、符型的数据,不能为实型或结构体等类型的数据。②六个位运算符的优先级由高到低依次为:取反、左移和右移、按位与、按位异或、按位或。③两个不同长度的数据进行位运算时,系统会将二者按右端对齐。下面对各种位运算符介绍如下:2.1判定性问题及判定条件的描述位运算1.“按位与”运算符(&)(1)规则:参与运算的两数(以补码方式出现)各对应的二进位相与(即逻辑乘),只有对应的两个二进位均为1时,结果位才为1,否则为0,它是双目运算符。即:0&0=0;0&1=0;1&0=0;1&1=1。例如:9&5可写算式如下:9的二进制补码:000010015的

17、二进制补码:00000101&___________________00000001(1的二进制补码)可见9&5=1。1.“按位与”运算符(&)(2)特殊用途:①清零按位与运算通常用来对某些位清0。由按位与的规则可知:为了使某数的指定位清零,可将该数按位与一特定数。该数中为1的位,特定数中相应位应为0;该数中为0的位,特定数中相应位可以为0也可以为1。由此可见,能对某一个数的指定位清零的数并不唯一。②取一个数中某些位可将该数与一个特定数进行&运算,对于要取的那些位,特定数中相应的位设为1。③取出数中某一位要相将一个数的某一位保留下

18、来,可将该数与一个特定数进行&运算,特定数的相对应的那位应为1。对原数00110110中为1的位清零。原数补码:00110110清零的数:11000000(或01000000、00000000等)&___________________00000000程序可写为:#include"stdio.h"main(){inta=0x36,b=0xc0,c;c=a&b;printf("a=%xb=%xc=%x",a,b,c);}运行情况为:a=36b=c0c=0把a的高八位清0,保留低八位。可作a&255运算(255的二进制数为

19、0000000011111111)。#include"stdio.h"main(){inta,b=255,c;scanf(“%d”,&a);/*从键盘敲入a,随后具体讲解scanf*/c=a&b;printf("a=%xb=%xc=%x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。