《2022年第一章C语言基础知识》由会员分享,可在线阅读,更多相关《2022年第一章C语言基础知识(14页珍藏版)》请在金锄头文库上搜索。
1、读书之法 ,在循序而渐进 ,熟读而精思第一章C语言基础知识考点1 C语言程序的结构认识本节通过一个简单的c 程序例子,介绍c 语言的基本构成、格式、以及良好的书写风格,使读者对 c 语言有个初步认识。例 1 计算两个整数之和的c程序:#include main() int a,b,sum; /* 定义变量a,b,sum 为整型变量 */ a=20; /* 把整数 20 赋值给整型变量a*/ b=15; /* 把整数 15 赋值给整型变量b*/ sum=a+b; /* 把两个数之和赋值给整型变量sum*/ printf(“ a=%d,b=%d,sum=%dn” ,a,b,sum);/* 把计算结
2、果输出到显示屏上*/ 重点说明:1、任何一个c 语言程序都必须包括以下格式:main() 这是 c 语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。2、main()-在 c 语言中称之为“ 主函数 ” ,一个 c 程序有且仅有一个main 函数,任何一个c程序总是从main 函数开始执行,main 函数后面的一对圆括号不能省略。3、 被大括号 括起来的内容称为main 函数的函数体, 这部分内容就是计算机要执行的内容。4、在 里面每一句话后面都有一个分号(;) ,在c 语言中,我们把以一个分号结尾的一句话叫做一个c 语言的语句,分号是语句结束
3、的标志。5、printf(“ a=%d,b=%d,sum=%dn” ,a,b,sum); -通过执行这条c 语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果:a=20,b=15,sum=35 6、#include 注意: (1)以 #号开头(2)不以分号结尾这一行没有分号,所以不是语句,在c 语言中称之为命令行,或者叫做“ 预编译处理命令” 。7、程序中以/* 开头并且以 */ 结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置, 为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分
4、不存在于主函数中。考点2 C程序的生成过程C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件,如图所示。编译过程精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思源程序的扩展名为.c ,目标程序的扩展名为.obj , 可执行程序的扩展名为.exe 。考点3 标识符在编写程序时,必须为函数、变量等命名,这个名字称为标识符。C语言中标识符的命名规则如下:1、标识符只能由字母、数字、下划线组成;2、标识符的第一个字母必须是字母和下划线;3、标识符区分大小写字母,如If 和 if 是两个
5、完全不同的标识符。合法标识符如下:A6, b_3 , _mn 非法的标识符如下:ab#12 , 8m , tr3:4 , yes no 标识符不能与程序中具有特殊意义的关键字相同,不能与用户编制的函数名、C语言库函数相同, 在程序中各种标识符尽量不要重复,以便区分。选择变量名和其他标识符时,应注意做到“ 见名知义 ” 。标识符分为如下三类:1、关键字关键字是具有特定含义的,专门用来说明c 语言特定成分的一类标识符,不能用作用户的标识符。auto break case char union do double else enum extern goto if int long short sig
6、ned static sizof struct switch unsigned void for while 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思typedef continue float return typedef default 2、预定义标识符预定义标识符在c语言中也有特定的含义,但可以用作用户标识符,预定义标识符分为两类:(1) 、库函数名字,比如(printf ,scanf,sin,isdigit 等)(2) 、编译处理命令名,比如(define,include )
7、3、用户标识符用户根据需要自己定义的标识符称为用户标识符。无论如何自定义标识符,都必须符合标识符的三条命名规则。考点4 常量在程序运行中,其值不能被改变的量称为常量。常量有5 种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。(一)数值转换数字的四种表现形式:l 二进制:所有数字由0,1 构成,逢二进一,二进制数中不会出现2.。例: 110101 l 八进制:以数字0(注意不是以字母O,o)开头,所有数字由07 构成,逢八进一,八进制数中不会出现8。例: 0112,0123,077 等l 十进制:所有数字由09 构成,逢十进一,十进制数中不会出现10。例: 0,12,-15 等l 十
8、六进制:以0x 或者 0X(数字 0 加字母 x)开头 ,所有数字由09,AF(或者 af)构成,逢十六进一(其中A、B、C、D、E 、 F分别代表10、 11、12、13、14、15)例: 0x4A 0X14c7等在计算机内部, 数字均以二进制形式表示和存放,用户输入的普通十进制数字都要被计算机转换成二进制才能在计算机内部存储,同样计算机的运算结果也为二进制,一般要将其转换成十进制数再输出给用户阅读,这种转换通常由计算机自动实现。(1)将十进制转换二进制、八进制和十六进制除法:将十进制数除以2,记录余数,得到的商继续除以2,直到商为0,然后将各次相处所得的余数从后往前逆序排列,所得余数数字序
9、列就是该十进制数对应的二进制数。八进制和十六进制转换方法同上。例:十进制数13 转换成二进制数的值为1101,转换八进制为015,转换成十六进制为D. (2)将二进制、八进制和十六进制转换成十进制乘积求和:将二进制的每一位从低位到高位(右边为低位,左边为高位)分别乘以20,21,22。 。 。 。 ,然后将这些积求和。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思例如: (1101)2=(13)10 ( 317)8=(207) 10 (23E)16=(574)10 (3)二进制与八进制、十
10、六进制数之间的相互转换二进制转八进制:从右往左每三位一组转换成十进制数,将所得数据组合就是对应的八进制数(注意:高位不足三位补零)。例: (010 110 111)2=(267)8 二进制转十六进制:从右往左每四位一组转换成十进制数,将所得数据组合就是对应的十六进制数(注意:高位不足四位补零)。例: (0101 1011)2=( 5B)16 八进制转化二进制:每一位数字转换为三位二进制数字例: (13)8=(001 011)2=(1011)2 (注意:去掉前面的两个00,因为 0 在高位没有意义)十六进制转化二进制:每一位数字转换为四位二进制数字例: (E3)16=(1110 0011)2 (
11、二)整型常量整型常量有3 种形式:十进制整型常量、八进制整型常量和十六进制整型常量。(注意: c 语言中没有直接表示二进制的整型常量,在c 语言源程序中不会出现二进制。)书写方式如下:十进制整型常量:123 , 0 ,-24 , 85L(长整型常量)等八进制整型常量:051 ,-026 ,0773 等十六进制整型常量:0x55 , 0x1101 , 0x , 0x5AC0 , -0xFF 。其中 L 为长整型。(三)实型常量实型常量有两种表示形式:小数形式和指数形式。小数形式: 5.4 0.074 -23.0 指数形式: 5.4e0 4.3e-3 -3.3e4 (1)小数部分为0 的实型常量,
12、可以写为453.0 或 453。(2) 用小数表示时, 小数点的两边必须有数,不能写成 “ .453 “和“453.“, 而应该写成 “0.453“和“ 453.0 “。(3)用指数写法时,e 前必须有数字,e 后面的指数必须为整数(注意:整数阶码可以是正数,负数,也可以是八进制数、十六进制数,但必须为整数)。(四)字符常量字符常量的标志是一对单引号 ,c 语言中的字符常量有两类:(1)由一对单引号括起来的一个字符,如a , r , #。注意 : a 和 A 是两个不同的字符常量。(2)由一对单引号括起来,以反斜杠开头,后跟若干数字或者字母,比如 n,其中 “ 是转义的意思 ,后面跟不同的字符
13、表示不同的意思,这类字符常量叫转义字符。具体如图所示。转义字符转义字符的意义ASCII码精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思n 回车换行10 t 横向跳到下一制表位置9 b 退格8 r 回车13 f 走纸换页12 反斜线符 92 单引号符39 ”双引号符34 a 鸣铃7 ddd 13 位八进制数所代表的字符xhh 12 位十六进制数所代表的字符(五)字符串常量C语言中,以双引号括起来的,由若干个字符组成的序列即为字符串常量。例: “ni hao ” “happy”等等。(六)符号
14、常量符号常量是由宏定义“#define “定义的常量,在C程序中可用标识符代表一个常量。例:计算圆的面积的c 程序。#include #define PI 3.14159 main() float r,s; r=12.5; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思S=PI *r*r; printf(“ s= %f ” ,s); 说明:#define 是宏定义, 有关宏定义在以后的章节中详细说明,此程序中所有出现PI的地方都代表 3.14159,同时 PI 称为符号常量。习惯上我们用大
15、写字母来表示符号常量,小写字母表示变量,这样比较容易区别。考点5 变量变量就是其值可以改变的量。变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值。不同类型的变量其存储单元的大小不同,变量在使用前必须定义。(一)整型变量整型变量分为4 种:基本型 (int) 、短整型 (short int 或 short)、长整型 (long int 或 long)和无符号型 (unsigned int ,unsigned short ,unsigned long)。不同的编译系统对上述四种整型数据所占用的位数和数值范围有不同的规定。类型说明符字节数值范围字符型char 1 C字符集基本
16、整型int 2 -3276832767 短整型short int 2 -3276832767 长整型long int 4 -214783648214783647 无符号型unsigned 2 065535 无符号长整型unsigned long 4 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思04294967295 单精度实型float 4 3/4E-383/4E+38 双精度实型double 8 1/7E-3081/7E+308 说明:单词 signed 来说明 “ 有符号 ”(即有正
17、负数之分) ,不写 signed 也隐含说明为有符号,unsigned用来说明 “ 无符号 ” (只表示正数) 。(二)实型变量C语言中,实型变量分为单精度类型( float ) 和双精度类型( double )两种。如 : float a , b ; double m ; 在 vc 中, float 型数据在内存中占4 个字节 (32 位),double 型数据占8 个字节。单精度实数提供 7 位有效数字,双精度实数提供1516 位有效数字。实型常量不分float 型和 double型,一个实型常量可以赋给一个float 型或 double 型变量, 但变量根据其类型截取实型常量中相应的有效
18、数字。注意: 实型变量只能存放实型值,不能用整型变量存放实型值,也不能用实型变量存放整型值。(三)字符变量字符变量用来存放字符常量,定义形式:char 变量名;其中关键字char 定义字符型数据类型,占用一个字节的存储单元。例: char cr1,cr2; cr1= A , cr2= B ;将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中。例如,字符A 的 ASCII码为 65,在内存中的存放形式如下:01000001 由于在内存中字符以ASCII码存放,它的存储形式和整数的存储形式类似,所以C语言中字符型数据与整型数据之间可以通用,
19、一个字符能用字符的形式输出,也能用整数的形式输出,字符数据也能进行算术运算,此时相当于对它们的ASCII码进行运算。考点6 类型的自动转换和强制转换当同一表达式中各数据的类型不同时,编译程序会自动把它们转变成同一类型后再进行计算。转换优先级为:char int float =,)、小于 (=)、小于等于(=)和不等于 (!=)六种。5、逻辑运算符 :用于逻辑运算。包括与(&) 、或 (|) 、非 (!)三种。6、条件运算符 :这是一个三目运算符,用于条件求值(?:)。7、位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或 (|) 、位非 ()、位异或 ()、左移 ()六种。8
20、、指针运算符 :用于取内容 (*) 和取地址 (&)二种运算。9.、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。10、特殊运算符 :有括号 (),下标 ,成员 ( ,.)等几种。另外, 按参与运算的对象个数,C语言运算符可分为:单目运算符(如 !)、双目运算符(如+,- )和三目运算符(如 ? : )。考点8 算术运算符和算术表达式一、基本的算术运算符(1)+(加法运算符或正值运算符,如2+5)。(2)-(减法运算符或负值运算符,如4-2)。(3)*( 乘法运算符,如3*8) 。(4)/(除法运算符,如11/5)。/的运算分为两种情况:a、“ 除” 的左右两边都为整数时,所得
21、结果必然是整数(注意:仅取整数部分,不是四舍五入)比如: 5/2 的值为 2,不是 2.5,1/2 的值为 0。b、“ 除” 的左右两边至少有一个是实型数据(即小数)时,所得结果为实型数据。比如: 5/2.0 的值为 2.5,7.0/2.0 的值为 3.5. (5)%(模运算符或称求余运算符,%两侧均应为整型数据,如9%7的值为 2)。需要说明的是:当运算对象为负数时,所得结果随编译器不同而不同,在vc 中,结果的符号与被除数相同,比如:13%-2 值为 1,而 -15%2 值为 -1. 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共
22、14 页读书之法 ,在循序而渐进 ,熟读而精思二、算术表达式和运算符的优先级与结合性算术表达式是用算术运算符和括号将运算量(也称操作数 )连接起来的、符合C语言语法规则的表达式。运算对象包括函数、常量和变量等。在计算机语言中, 算术表达式的求值规律与数学中的四则运算的规律类似,其运算规则和要求如下。(1)在算术表达式中,可使用多层圆括号,但括号必须配对。运算时从内层圆括号开始,由内向外依次计算各表达式的值。(2)在算术表达式中,对于不同优先级的运算符,可按运算符的优先级由高到低进行运算,若表达式中运算符的优先级相同,则按运算符的结合方向进行运算。(3)如果一个运算符两侧的操作数类型不同,则先利
23、用自动转换或强制类型转换,使两者具有相同类型,然后进行运算。三、自增自减运算符作用:使变量的值增1 或减 1。如: +i,-i (在使用 i 之前,先使i 的值加 1、减 1)。i+,i- (在使用 i 之后,使i 的值加 1、减 1)。(1)只有变量才能用自增运算符(+)和自减运算符(-),而常量或表达式不能用,如10+或(x+y)+都是不合法的。(2)+和-的结合方向是 “ 自右向左 “ ,如-i+ ,i 的左边是负号运算符,右边是自增运算符,负号运算和自增运算都是“ 自右向左 “ 结合的,相当于-(i+)。在循环语句中常用到自增(减)运算符,在指针中也常用到该运算符,考生要弄清楚“i+
24、”和“+i ”及“ i-” 和“ -i ” 的区别 ,特别弄清楚表达式的值和变量的值。例:变量n 的初始值为2,则表达式类型i+ +i i- -i n 值为 2 时各表达式的值2 3 2 1 经过各表达式运算后变量n 的值变化为3 3 1 1 例:有以下程序#include stdio.h main( ) int m=12,n=34 ;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思printf(%d %d ,m+,+n);/* 输出表达式m+和表达式 +n 的值 */ printf(%d
25、%d ,+m,n+);/* 输出表达式 +m 和表达式n+的值 */ printf(%d %d ,m,n) ;/* 输出 m 、n 的值 */ 程序运行后的输出结果是_ A12 35 13 35 14 36 B. 12 35 14 35 14 36 C12 35 14 36 14 36 D. 12 35 14 35 14 35 解析: 自增自减运算需要注意区分表达式的值和变量的值,表达式运算后, 变量会自增自减运算,表达式和变量变化如下:执行语句前的值m n 执行语句后m n 12 34 m+表达式值12 +n 表达式值35 13 35 13 35 +m 表达式值14 n+表达式值35 14
26、36 14 36 14 36 考点9 赋值运算符与赋值表达式一、赋值运算符与赋值表达式赋值符号“=“就是赋值运算符, 作用是将一个数据赋给一个变量或将一个变量的值赋给另一个变量,由赋值运算符组成的表达式称为赋值表达式。一般形式为:变量名= 表达式精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思在程序中可以多次给一个变量赋值,每赋一次值, 与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋值的那个数据。例: a=12; 此表达式读作 “ 将 10 的值赋值给变量a” 。
27、说明:a、如果赋值号两边的运算对象类型不一致,系统会自动进行类型转换,转换的规则:将赋值号右边表达式的值的类型转换成赋值号左边变量的类型,例: int y=3.5; 在变量 y 中最终存储的是整数3。b、 可以将复制表达式的值再赋值给变量,形成连续赋值。例如: x=y=25 是一个连续赋值表达式,x=y=25 等价于x=(y=25) ,所以表达式x=y=25 最终的值为 25 。二、复合的赋值运算符在赋值运算符之前加上其他运算符可以构成复合赋值运算符。其中与算术运算有关的复合运算符是: +=,-=,*=, /=,%= 。两个符号之间不可以有空格,复合赋值运算符的优先级与赋值运算符的相同。表达式
28、n+=1等价于 n=n+1, 作用是取变量n 中的值增 1 再赋给变量n,其他复合的赋值运算符的运算规则依次类推。如求表达a+=a-=a*a 的值 ,其中 a 的初值为 12 。步骤:(1)先进行 “a-=a*a“ 运算,相当于a=a-a*a=12-144=-132 。(2)再进行 “a+= -132“ 运算,相当于a=a+(-132)=-132-132=264 。考点10 逗号运算符和逗号表达式在 c 语言中,逗号除了作为分隔符,还可以用作一种运算符-逗号运算符,用逗号运算符将几个表达式连接起来,例如a=b+c,a=b*c 等称为逗号表达式。一般形式为:表达式 1 ,表达式2 ,表达式 3
29、, ,表达式n 例: x=2,y=3,z=4 逗号表达式具有从左至右的结合性,即先求解表达式1,然后依次求解表达式2,直到表达式 n 的值。表达式n 的值就是整个逗号表达式的值。上述的逗号表达式的值就是表达式z=4的值 4.需要注意的是,逗号运算符是所有运算符中级别最低的。例:有如下程序段:main() int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c); printf(y=%d,x=%d,y,x); 程序显示结果为:y=6,x=6 讨论:将y=(x=a+b),(b+c);改为 y=(x=a+b),b+c) 的程序结果?考点11 关系运算符和关系表达式一、C语言中的逻辑值
30、精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思C语言中的逻辑值只有两个:真(true)和假( flase)。用非零代表真,用零代表假。因此,对于任意一个表达式,如果它的值为零,就代表一个假值,如果它的值为非零,就代表一个真值。只要值不是零,不管是正数,负数,整数,实数,都代表一个真值。例如-5 的逻辑值为真。二、关系运算符及其优先次序C语言提供了6 种关系运算符,见表优先级优先级相同(高)优先级相同(低)关系运算符、=、= =(等于) 、 !=(不等于)由两个字符组成的运算符之间不可以加
31、空格,关系运算符都是双目运算符。(1)结合性:自左向右。(2)优先次序:前4 种关系运算符 ( ,=, )的优先级别相同,后两种(=,!=)优先级相同,且前 4 种优先级高于后两种;关系运算符的优先级低于算术运算符,高于赋值运算符。三、关系表达式由关系运算符连接而成的表达式称为关系表达式。例如: ab,(a=7)(b=10)等都是合法的关系表达式。关系表达式的结果有两个:0 和 1,。其中 0 表示假, 1 表示真。如果关系表达式成立,则值为真,如果关系表达式不成立,则值为假。例:变量a 的值为 5,b 的值为 6,那么关系表达式ab 的值为假,即为0.而关系表达式(a=13)(b=10)的值
32、为真,即为1。当关系运算符两边值的类型不一致时,若一边是整型, 一边是实型, 系统将自动把整型数转化为实型数,然后再进行比较。考点12 逻辑运算符和逻辑表达式一、逻辑运算符及其优先级语言提供了3 种逻辑运算符,如下表。优先级由高到低逻辑运算符! (逻辑非)高于&(逻辑与)高于(逻辑或)说明:“ &”和“ | ”是双目运算符,要求要有两个操作数,而“ !” 是单目运算符,只要求有一个操作数即可。以上逻辑运算符的优先级是:“! ”(逻辑非 )级别最高,其次是“& ”(逻辑与 ),“| ”(逻辑或 )级别最低,逻辑运算符中的“& ” 和“| ”低于关系运算符,“! ”高于算术运算符。即: “ !”
33、(逻辑非) 算术运算符 关系运算符 “& ”“| ”赋值运算符 逗号运算符。二、逻辑表达式“ &”和“ | ”的运算对象有两个,故它们都是双目运算符,而!的运算对象只有一个,因此它精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思是单目运算符。逻辑运算举例如下:(1)a&b: 当& 两边都为 “ 真” 时,表达式a&b 的值才是真。值得注意的是:在数学中,关系式0x10是可以使用的,表示x 的值应在大于0 且小于 10的范围内,但在语言中却不能用0x10 这样一个关系表达式来表示上述的逻辑关
34、系,即关系运算符不能连用,但可以借助逻辑运算符来辅助运算,正确的表示方法是0x & x10。(2)a|b: 当| 两边有一个为 “ 真” 时,表达式a|b的值就是真。(3)!a: 表示取反,如果a 为真,则 !A 为假,反之亦然。例如!-5 的值就为0. 在语言中,由&或| 组成的逻辑表达式,在某些特定情况下会产生“ 短路 “ 现象。(1)x & y & z ,只有当x 为真 (非 0)时,才需要判别y 的值;只有x 和 y 都为真时,才需要去判别z 的值;只要 x 为假就不必判别y 和 z, 整个表达式的值为0。口诀: “ 一假必假 ” 。例: (!5=1) & (+i=0) (!5=1)
35、表达式的值为0, 所以计算机运行中就跳过(+i=0)此表达式,(! 5=1)&(+i=0)表达式的值为0. (2)x|y|z ,只要 x 的值为真 (非零 ),就不必判别y 和 z 的值,整个表达式的值为1,只有 x 的值为假, 才需要判别y 的值, 只有 x 和 y 的值同时为假才需要判别z的值, 口诀: “ 一真必真 ” 。考点13 位运算一、位运算符在计算机中, 数据都是以二进制数形式存放的,位运算就是指对存储单元中二进制位的运算。C语言提供6 种位运算符。操作符含义规则& 按位与若两个相应的二进制位都为1,则该位的结果为1,否则为0 | 按位或两个相应的二进制位中只要有一个为1,则该位
36、的结果为1,否则为 0 按位异或若两个二进制位同号,则结果为0,异号为1 按位求反按位取反,即0 变 1,1 变 0 右移将一个数的二进制位全部右移若干位说明:(1)位运算中除“以外,均为双目运算符,要求两侧各有一个运算量。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 14 页读书之法 ,在循序而渐进 ,熟读而精思(2)运算量只能是整型或字符型数据,不能为实型数据。二、位运算位运算符& | 按优先级从高到低排列的顺序是:位运算符中求反运算“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与 “&“、按位异或“ “ 和按位或
37、“| “。顺序为 & | 。例 1 左移运算符 “”是双目运算符。其功能把“ ” 左边的运算数的各二进位全部左移若干位,由 “”右边的数指定移动的位数,高位丢弃,低位补0。例如:a”是双目运算符。其功能是把“ ” 左边的运算数的各二进位全部右移若干位, “”右边的数指定移动的位数。例如:设a=15,a2 表示把 000001111 右移为 00000011(十进制 3)。应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0 或是补 1 取决于编译系统的规定。例 3 设二进制数a 是 00101101 ,若通过异或运算ab 使 a 的高 4 位取反,低4 位不变,则二进制数b 是。解析 :异或运算常用来使特定位翻转,只要使需翻转的位与1 进行异或操作就可以了,因为原数中值为1 的位与 1 进行异或运算得0 ,原数中值为0 的位与 1 进行异或运算结果得1。而与 0 进行异或的位将保持原值。异或运算还可用来交换两个值,不用临时变量。如 int a=3 , b=4; ,想将 a 与 b 的值互换,可用如下语句实现:a=ab; b=ba; a=ab; 所以本题的答案为:11110000 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 14 页