




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选学习资料 - - - 欢迎下载学习必备欢迎下载运算机软考程序员备考程序设计学问点22.1 c 语言的数据类型数据类型包含两方面的内容:数据的表示和对数据加工的操作;数据的全部可能表示构成数据类型的值的集合;数据全部合理的操作构成数据类型的操作集合;在 c 语言中,把整型.实型和字符型称为基本数据类型,又称整型和实型为数值型;为了描述更复杂的数据结构, c 语言仍有构造类型.指针类型.放举类型和空类型;构造类型为指由如干个相关的数据组合在一起形成的一种复杂数据类型;1.整型整型数据按其储备在内存中的二进位信息的最高位为当作数值信息位仍为当作数据的符号位,将整型数据分成带符号整型和无符号整型两
2、种;每种整型又按所需的字节个数的多少分成三种;所以整型共有6种:带符号整型 int .带符号短整型 short int.带符号长整型 long int ,或 long .无符号整型 unsigned int .无符号短整型 unsigned short int 以无符号长整型unsigned long ;2.实型实型数据有表示范畴和精度两个不同的特点,为了适应数的范畴和精度的不同要求,实型数据分三种类型:单精度型 也称浮点型float .双精度型 double.长双精度型 long double ;3.构造类型构造类型为指由如干个相关的数据组合在一起形成的一种复杂数据类型,构造数据类型的成分数
3、据可以为基本数据类型的, 也可以为别的构造类型的; 按构造方式和构造要求区分, 构造类型主要有数组类型.结构类型和共用类型; 数组类型为由相同类型的数据组成 ; 结构类型可以由不同类型的数据组成 ; 当不同数据类型不会同时使用时,以节省内存,让不同数据占用同一区域,这就为共用类型;4.指针类型指针类型为取程序对象如变量 在内存中占居的地址为值的一种特殊的数据类型;5.枚举类型当变量只取很少几种可能的值,并分别用标识符对值命名时,这种变量的数据类型可用枚举类型来表示;如变量表示一个星期中的某一天,就可用校举类型描述该变量的类型,并以星期见的英文名对日期命名,对应的变量取某日的星期名称为其值;6.
4、void 类型用保留字 void 表示的数据类型有两种完全相反的意思,或表示没有数据没有结果.没有形式参数, 或表示某种任意类型的数据如又与指针结合,用void;标记 ; void 表示空类型, void ;表示任意数据的 指针类型,程序如要使用void;类型的数据,应当将它强制地转换成某种详细的指针类型;2.2 常量常量为指程序运行过程中其值不行转变的数据;常量按其值的表现形式可分为如下类型:整型常量.实型常量.字符型常量.字符串常量和指针常量;1.整型常量c 语言整型常量的书写形式有三种:1十进制整数;通常整数的写法,如0, 123, -45 ,+25;2八进制整数;以数字符0 开头并由数
5、字符0-7 组成的数字符序列,为八进制整数;如0123 表示八进制整数,其值等于十进制整数l*8*8+2*8+3=83 ;3十六进制整数;十六进制整数以ox 或 ox 开头的整数;表示十六进制数的数字将有16 个,它们分别为 0-9 和 a.b .c.d.e.f,其中六个英文字母也可以小写;例如,0x123 表示十六进制整数,其值等于十进制整数1*16*16+2*16+3=291; oxabc ,其值等于10*16*16+11+16+12=2748 ;整型常量也可在整数之后接上字母l 或 l ,特殊指明它为long 型的;整型常量也可在整数之后接上字母u 或 u,特殊指明为不带符号的,即为 u
6、nsigned 型的;为指明不带精品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载符号的 long 型整型常量,就需在整数之后同时加上字母u 和 l,说明该整型常量为unsigned long 型的;整型数据以二进制形式存放,要求短整型数据的字节数不能大于整型数据的字节数;整型数据的字节数不能大于长整型数据的字节数;对于带符号的整数,用二进制代码的最左二进位作为数的符号,1 表示负数, 0 表示正数;2.实型常量c 语言实型常量的一般书写格式为: 正负号整数部分 .小数部分指数部分其中,正负号可有可无,无正负号即为正实数;整数部分和小数部分都为十进数字符序列; 指数部分为e或 e后
7、接上正负号 正号可有可无 和十进数字符序列;按上述格式书写实型常量,另有两条限制:l 整数部分和小数部分可以任选,但不行同时都没有;2小数点和指数部分不行以同时都没有;ansic 引入两个后缀字符,用f 标识 float 型实型常量,用1 或 l 标识 fong double 型实型常量,而无后缀符的实型常量被认为为double 型的实型常量;要留意实型常量的有效位数,不要以为写上的数字都能被运算机所接受;在大多数 c 系统中,一个 float型实型数据在内存中占用4 个字节 32 个二进位 ,约 7 个十进位有效数字,能表示肯定值最接近0 的实数约为 10 的-38 次方,最大的实数约为10
8、 的 38 次方;例如,对于代码float x=123456.123f ,在大多数系统中,实型常量123456.123f 的最终两位数字为无效的;double 型实型数据占用8 个字节 64 个二进位 ,约 15 个十进位有效数字,能表示肯定值最接近0 的实数约为 10 的一 308 次方,最大的实数约为10 的 308 次方;3.字符常量字符型数据用于表示一个字符值,但字符型数据的内部表示为字符的ascll 代码 8 位二进位的二进制形式 ;字符型数据的类型符用char 来标记;字符型常量的书写方法:l 一般字符 - 用单引号括起一个字符;如a.b.b.$;2特殊字符 - 用字符或字符列采标
9、记;这种标记方法有三种:特定字符 ,标记特定掌握符,如换行符用 n来标记; 1 至 3 个人进制数字 ,以人进数表示字符的ascll 代码; x1 至 2 个十六进制数字符,以十六进制数表示字符的ascll 代码;由于字符以代码存放,所以也可把字符值当作一个小整数;反之,一个小整数也可把它懂得为为某个字符的代码,把它当作一个字符;4.字符串常量字符串常量用来表示一个字符序列,它的书写方法用双引号括住字符序列;例如: ”abc”.”等;字符串常量 “为”一个空字符串,即不含任何有效字符的字符串;字符串数据次序储备字符串字符的 ascll 代码,并在最终字符后面储备一个 h 进制代码全为 0 的特
10、殊字符,用来标记字符串的终止;所以字符串常量“ 1234在”内存占 5 个字节,而空字符串只占一个字节;字符串中的字符也可以为转义字符;5.符号常量为了提高程序的可读性,常量可以用以下形式命名:# define 标识符常量其中的标识符也称作符号常量,这里的常量为前面所述的某种常量.或为程序中前面定义的符号常量;例如:# define maxn 1002.3 变量变量为程序执行时,其值答应转变的数据对象,用来储备输入数据.运算的中间结果和程序的最终结果等;精品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载1.变量定义变量用标识符命名,通过变量定义引入的变量名习惯用英文字母开头,c 系
11、统可能也会预定义一些标记系统特性的变量,系统定义的变量习惯用下线字符开头;变量的数据特性由变量定义时指定的类型确定;如定义指定数据类型的变量即不在指定数据类型基础上定义新数据类型的变量,如指定类型的指针.数组等 ,这种变量定义的句法为:数据类型符变量名1,变量名 2,;编绎系统依据变量的数据类型确定存放它的值所需要的内存字节数,变量值的内部表示形多也由其类型确定;2.内部变量和外部变量变量按其定义显现在程序中的位置不同分成两类:在函数内定义的变量称为内部变量,而在函数之外函数之间 定义的变量称为外部变量;3.变量的储备类型系统按程序对运算机储备空间使用的不同要求,将内存分成不同用途的块,与运算
12、机的寄存器一起将 储备空间分成不同类别;而c 程序通过指定变量的储备类说明变量的不同的使用要求,让系统将变量安排于不同的内存块或寄存器;如在上述变量定义形式中,仍要指定变量的储备类型,变量定义的形式为:储备类型符数据类型符变量名1,变量名 2,;其中储备类型有四种:auto自动的 .static静态的 .register 寄存器的 和 extem 外部的 ;外部变量只答应被指定为静态的,或不指定其储备类型;内部变量可以被指定为自动的或静态的.或寄存器的.或不指定储备类型,如不指定储备类型,它就为自动的;自动变量为内部变量,在函数内或复合语句内定义,它们被安排在堆栈区;静态变量可以为内部变量,也
13、可以为外部变量;静态变量表示永久性和专用性,即在程序执行过程中始终存在,局限于定义它的函数内部静态变量 或局限于定义它的程序文件中那些函数外部静态变量 ;静态变量被安排在与程序相联的内存数据区;寄存器变量为函数的内部变量或参数,也为一种暂时性的变量;如因函数使用特别频繁程序期望将它安排在寄存器,程序就可将变量指定为寄存器的,但编译系统也可能把它当作动变量处理;指定储备类型为外部的,实际b 为告知编译器,这个变量为一个外部变量,在这里要使它,而它的定义或在别的程序文件或在后面的程序段等别的地方;4.变量的作用域和生存期变量的使用要留意变量的作用域可使用范畴 和生存期 存在的时间 ;c 语言规定,
14、内部变量的作用域只局限于定义它的函数或复合语句;自动的内部变量为一种暂时性变量,函数被调用时安排,函数执行结束时释放;而静态变量在程序执行前安排,直至程序终止才释放;由于静态的内部变量在函数终止时,照旧保持储备,函数上一次调用时留在内部静态变量中的结果能被下一次调用时连续使用;外部变量也在程序启动前安排,直至程序执行终止释放;一般的外部变量能供应别的源程序文件中的函数使用要对它作外部说明 ;静态的外部变量只能供定义它的源程序中的全部函数专用;由于外部变量能供整个程序使用,所以外部量不能重名;5.变量定义初始化变量定义为对变量的储备空间提出一种要求,储备空间安排后,变量的初值通常为不拔的;但程序
15、可以要求系统在为变量安排储备空间同时为变量设定初值,这就为变量定义初始化;在变量的定义形式中,在变量名之后接上 “=初值表达式 ”,该初值表达式的值就作为该变量的初值; c 语言另有商定,对于静态变量和外部变量,如定义它们时未指定初值,系统给它们设置成全部二进位都为 0 的值;以下为各种变量定义的例子:l 定义整型,并对其初始化;short minint =100;int i= l ,j= 2 , k=3;精品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载long p=-1l ,q=1234567890l;unsigned usi= 254u;unsigned long up= 4
16、294967295ul;2定义字符型变量,并对其初始化;char ch= a;3定义实型 浮点型.双精度型变量,并对其初始化; float f=1.23456f;double d=1.2345678op87654;2.4 运算符每个运算符都代表对运算对象的某种运算,都有自已特定的运算规章,规定运算对象的个数.运算对象数据类型,以及运算结果的数据类型;c 语言仍规定运算符有不同的优先级和结合性;运算符的优先级 指表达式求值时,按运算符的优先级由高到低的次序运算;如“先乘除后加减 ”;运算符的结合性为指运算符要求它的运算对象对它的结合方向;结合性确定了在相同优先级运算符连续显现的情形下运算对象与运
17、算符结合的次序,通常也为运算次序;如算术运算符的结合性为从左至右的,就连续的加减或连续的乘除为从左向右运算;而赋值运算符的结合性为从右至左的,就连续的赋值运算为从右向左逐个运算赋值;在c 语言中,要特殊留意某些运算符因运算对象数据类型不同,可能有不同的意义;1.算术运算符算术运算符的运算对象为基本数据类型的数据,实现通常的取整.取负.四就运算.求两整数相除后的余数的运算和增1 减 1 运算;特殊要留心的为整除运算.求余运算.增1 运算和减 1 运算;对两个整型数据执行除运算/ ,称为整除运算,要特殊留意的为两个整型数据的整除运算的结果为整型的,如表达式3/2 的结果为 1,表达式 2/3 的结
18、果为 0;求余运算符 % 要求参加运算的两个运算对象均为整型数据,如5% 3 的值为2;一般来说,求余运算所得结果的符号与被除数的符号相同;如-5%3 的值为 -2, 5%-3 的值为 2;增 1+ 和减 1- 运算符都为单目运算符,以整型. 字符型和指针型变量为运算对象,并转变运算对象的值;按它们显现在变量之前和之后两种不怜悯形,其作用有微妙的差别;前缀 +前缀 +的一般形式为+变量例如,如 x 为整型或某种指针类型的变量,就+x 使变量 x 的值增大 1 个单位,并以x 的新值作为表达式 “+x”的运算结果;如以下语句执行前,变量x 的值为 1,语句j= + x;使变量 x 的值变成 3,
19、变量 j 的值也为 3;这里所说的一个“单位 ”为指:假如 x 为整型的,就 +x 就为一般的说明: “x的值比原值增加1"x 为指针, 它指向数组的某个元素,就+x 使它指向数组的后一个元素;后缀 +后缀 +的一般形式为变量 +表达式 “变量 +”运算结果为该变量的原先值,在确定了表达式结果之后,用与前缀+相同的方式增大该变量的值 1 个单位;前缀 +和后缀 +都能使变量的值增加1 个单位,但为它们所代表的表达式的值却不相同,前者为变量 增加后的值,后者为变量仍未增加的原先值;例如i,j 为整型变量,且i 的值为 4,以下分别用和表记的代码将使 j 获得不同的值:j=+i ;j=
20、i+都使变量 i 的值变为 5,但使 j 的值为 5;使 j 的值为 4;精品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载前缀 -前缀 - 的一般形式为- 变量前缀 - 使变量的情削减 或后退 l 个单位,并以变量的新值为表达式“- 变量 ”的运算结果;后缀 -后缀 - 的一般形式为变量 -后缀 - 作用于变量时,以该变量的值作为表达式“变量 -”的运算结果,即先取其值为结果,然后用与前缀 - 相同的方式削减该变量1 个单位;后缀 - 与前缀 - 的区分类似于后缀+与前缀 +的区分;类似前面的例子,照旧假定i 的值为 4,两代码j= -ij=i-都使变量 i 的值变为 3,但使
21、j 的值为 3;使 j 的值为 4;使用 +和- 运算符时,其运算对象仅适用于变量,不能为常量等数据值表达式;如4+ 或i+j+ 都为不合法的;+和- 为带有副作用的运算符;建议读者不要在一个表达式中对同一变量多次使用这样的运算符,可能会发生意想不到的结果;如i 的值为 4,对表达式i+i+可能认为它的值为9+5 ;然而在turbo c 和 ms c 系统中,它的值为8;而表达式 +i+i的值为 12 ;这为由于这些系统在处理i+ 时,先使用i 的原值运算整个表达式,然后再让i 连续两次自增 ;处理+i 时,在运算表达式值之前,先对i 执行两次自增,然后才运算表达式;放前一个表达式的值为 8,
22、后一个表达式的值为12;因+ 与+- 与-类似 为两个不同运算符, 对于类似表达式 i+j 会有不同的懂得: i+ j 或 i+j ; c 编译的处理方法为自左至右让尽可能多的字符组成一个合法的句法单位 如标识符.数字.运算符等 ;因此, i+j 被说明成 i+j ,而不为 i+j ;增 1+ 和减 1- 运算符的结合方向为自右至左的;2.关系运算符用于关系运算的关系运算符有六个:<小于 .>大于 .<= 小于等于 .>= 大于等于 .=等于 和.= 不等 ;关系运算为双目运算,它的运算对象可以为基本数据类型的数据,用于比较大小 ;或为指向同一个数组两元素的指针,用于比
23、较前后关系;在高级语言中,习惯称条件满意为“真”,不满意为 “假”;特殊在c 语言中商定:比较后,条件满意真 的值为 1;比较后,条件不满意假的值为儿用关系运算符将两个子表达式 连接起来,构成关系比较表达式,求得结果为1真或 0假;六个关系运算符中, 运算符 <.<=.>.>= 的优先级高于运算符=,.= ;如表达式 x>y=cy=c<d;精品学习资料精选学习资料 - - - 欢迎下载< p>另外,为便于描述两个复杂算式的比较,关系运算符的优先级低于算术运算符的优先级;设有 i=1 , j=2 ,k=3 ,就表达式i>j 的值为 “假”,即
24、表达式的值为0;表达式 i=k>j 的值为 “真”,即表达精品学习资料精选学习资料 - - - 欢迎下载式的值为 1先运算 k>j ,其值为 1,等于 i;i+j<k的值为 “假”,即表达式 < p>的值为 0;关系运算符的结合方向为自左至右;仍设i=1 ,j=2 ,k=3,就表达式k>j>i 的值为 0先运算 k>j ,其值为 1,再运算 1>1,结果为 0;3.规律运算符用于规律运算的规律运算符有三个:精品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载&& 规律与 .|规律或 . 规律非 其中运算符 “&am
25、p;&”和“|为”双目运算符,要求有两个整型或字符型的运算对象,用于连接多个判定条件, 构成更复杂的条件判定;运算符 “. 为”单目运算符,用于描述对给定条件的否定判定;规律运算产生的结果也只能为1 或 0; 1 表示规律运算结果为“真”用; 0 表示运算结果为“假”;在判定一个运算对象的值为“真”或“假”时,以运算对象的值不等于零为“真”,运算对象的值等于0 为“假”;规律运算符中,按优先级排列为:规律非运算符.的优先级高于规律与运算符&& ,规律与运算符 && 的优先级高于规律或运算符|;另外, && 和|的优先级低于关系运算符的优先
26、级;. 的优先级高于算术运算符的 优先级;规律运算符|和&& 的结合方向为自左至右,而规律运算符.的结合方向为自有至左;需要特殊指出的为,“规律与 ”和“规律或 ”运算符分别有以下性质:a&&b、 仅当 a 为 0 时,不管 b 为何值 实际上不再运算b,结果为 0;a|b、仅当 a 为 1 时,不管b 为何值 实际上不再运算b,结果为 1;上述性质就为说, 对于表达式a&&b、 仅当子表达式a 为非零时, 才运算子表达式b;对于表达式a|b,仅 当子表达式a 为 0 时,才运算子表达式b;在详细编写程序时,也应利用以上性质;对于两个条件的规律与
27、,如当条件1 不成立情形下,条件2 的值没有意义或不行运算时,规律表达式应写成:条件 l&& 条件 2防止在条件 1 不成立情形下,运算条件2;如有条件: y/x>2 且 x.=0,应写成:x.=0 && y/x>2当 x 为 0 时,不会运算y/x ;而写成: y/x>2 && x.=0为不正确的,由于当x 为 0 时,不能运算y/x ;对于规律或也有类似情形;由于上述性质,在运算连续的规律与和规律或运算时,实际上不分优先级,而为次序从左至右运算;在运算规律与运算时,如有左运算对象的值为 0,就不再连续运算规律与运算,并立刻以
28、 0 为规律与运算的结果 ; 在运算规律或运算时,如有左运算对象的值为 1,就不再连续运算规律或运算,并立刻以 1 为规律或运算的结果;在次序运算规律表达式的过程中,一旦确定了表达式的最终结果,就不再连续运算;4.赋值运算符赋值运算的最简洁形式为变量 =表达式其中 “=”为赋值运算符;赋值运算的执行过程为:l 先运算赋值运算符右端的表达式;2 如表达式的类型与赋值运算符左边的变量类型不同仅限于基本类型,将表达式值的类型自动转换成变量的类型 ;3将求得的值赋给变量,即储备到由变量所占的内存中;简洁地说,运算表达式的值,将该值赋给变量;赋值运算也有结果,经赋值运算后,赋值表达式具有赋值后赋位运算符
29、左边变量同样的类型和值;因赋位运算有值,所以可以进一步参加运算,特殊为可以再赋植给其它变量;赋值运算符的结合性为 边有至左”的,当连续有多个赋值运算时,就从右至左逐个赋值;如有变量定义:int k; double x; 就赋值表达式: x= k= 3.5为先将实数 3.5 自动转换成整数3 赋给整型变量k,然后又将整数3 自动转换成实数3.0 赋给实型变量x ;所以, k 的值为 3, x 的值为 3.0;在程序中,常常遇到在变量当前值的基础上作某种修正的运算;如x=x+5.0这类运算的特点为:变量既为运算对象,又为赋值对象;为防止对同一储备对象的地址重复运算,c精品学习资料精选学习资料 -
30、- - 欢迎下载学习必备欢迎下载语言弓队复合赋值运算符;它们为+=.-=.*= .%= . =. = .&=.=.|= 通常,记日为某个双目运算符,复合赋值运算x=e其等效的表达式为x= x e留意,当 e 为一个复杂表达式时,等效表达式的括号为必需的;如 y*= a+b的等效表达式为y= y*a+b赋值运算符和全部复合赋值运算符的优先级全相同,并且都为“自右至左 ”结合,它们的优先级高于远号运算符的优先级,低于其它全部运算符的优先级;5.逗号运算符逗号运算符 “,”用于将如干表达式连接起来次序地逐个运算;连续返号运算的一般形式为:表达式 1,表达式 2,表达式 n它的运算次序为从左到
31、右逐一运算各表达式,并以表达式n 的值为连续逗号运算的结果;例如,表达式x= i=3 , i*2使 i 等于 3,x 等于 6;其实,逗号运算只为把多个表达式串联起来,在很多情形下,使用逗号运算的目的只为想分别运算各个表达式的值,而并非想使用逗号运算中最终那个表达式的值;逗号运算最常用于for 结构中,用于给多个变量登初值,或用于对多个变量的值逐一修改等;逗号运算符的优先级最低,其结合性为 “自左向右 ”的;6.条件运算符条件运算为一个三目运算,有三个运算对象;条件运算的一般形式为表达式 1.表达式 2:表达式 3条件运算的运算规章为:1运算表达式1 的值;2假如表达式1 的值非 0真,就运算
32、表达式2,并以表达式2 的值为条件运算的结果 不再运算表达式 3;3假如表达式1 的值为 0假,就运算表达式3,并以表达式3 的值为条件运算的结果 不再运算表达式 2 ;例如,表达式x>y.x : y假如 x>y 条件为真,就条件运算取x 值,否就取y 值;条件运算符 .:的优先级高于赋值运算符,低于规律运算符,也低于关系运算符和算术运算符;例如,表达式max= x> y.x : y+ l 等效于表达式max=x>y .x : y+l条件运算符的结合性为“自右至左 ”;例如,表达式x>y.x : u>v.u :v等效于表达式x>y.x : u>v
33、.u : v7.长度运算符长度运算以字节为单位给出其运算对象所需 或所占 的字节数,运算对象可以为任何类型的数据对象或数据类型;它为依据对象的类型来确定对象所需 的字节数的;精品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载长度运算有两种书写形式:sizeof 变量名或 sizeof 类型名 假如有某种类型为江的变量v ,其中 t 可以为系统供应的类型或用户自己定义的类型,可以为简洁的,也可以为数组.结构等;就sizeof v 就为变量v 所占的字节数;如有int j; double x;表达式 sizeof j 和 sizeof x 分别为变量j 和 x 所占的字节数;sizeo
34、ft为系统为安排一个类型为t 的数据对象所需的字节数;如sizeofint 和 sizeofdou-ble 分别为系统为安排一个类型为int 和 double 变量所需的字节数;8.位运算符位运算的运算对象只能为整型或字符型数据,位运算把运算对象看作为由二进位组成的位率信息,按位完成指定的运算,得到位串信息的结果;位运算符又可分成两类:一类为位规律运算符,另一类为位移位运算符;位规律运算符有:& 按位与 .|按位或 .按位异或 . 按位取反 位移位运算有: << 位左移 和>> 位右移 其中按位取反运算符为单目运算符;其余均为双位运算符; 位规律运算符的优先级从
35、高到低,依次为.& . .|.,其中的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都为自左至右,且优先级低于关系运算符;位移位运算符的优先级低于算术运算符,高于关系运算符,它们的结合方向为自左至右;按位与运算符 &按位与运算将将两个运算对象的对应位按位遵照以下规章进行运算:0&0=0 , 0&l=0 ,1&0=0 , 1&l=1即同为一的位,结果为1,否就结果为0;例如,设3 的内部表示为00000011、5 的内部表示为00000101 ,就 3&5 的结果为 00000001 按位与运算有两种典型用法;一为取一个位率
36、信息的某几位,如以下代码截取;的最低7 位.&0177t 二为让某变量保留某几位,其余位设置成0,如以下代码让x 只保留最低6 位: x=x&077 .以上用法都先要设计好一个 常数,该常数只有需要的位为互,不需要的位为0;用它与指定的位串信息按位与;按位或运算符 |按位或运算将两个运算对象的对应位按位遵照以下规章进行运算:0|0=0, 0|l=1 , 1|0=l , 1|1=1即只要有五个为1 的位,结果为1,否就为 0;例如, 023|035 结果为 037;按位或运算的典型用法为将一个位串信息的某几位设置成1;如将要获得最右4 位为 1,其它位与变量j 的其它位相同,可用
37、规律或运算017|j;如要把这结果赋给变量j,可写成: j=017|j按位异或运算符 按位异或运算将两个运算对象的对应位按位遵照以下规章进行运算:00= 0, 01=l , l0=l , 1l=0即相应位的值相同的,结果为0,不相同的结果为l;例如, 013035 的结果为 026;异或运算的意思为求两个运算对象相应位值为否相异,相异的为 1,相同的为 0;按位异或运算的典型用法为求一个位串信息的某几位信息的反;如欲求整型变量j 的最右 4 位信息的反, 用规律异或运算017j、 就能求得 j 最右 4 位的信息的反,即原先为1 的位,结果为0; 原先为 0 的位,结果为1;按位取反运算符 精
38、品学习资料精选学习资料 - - - 欢迎下载学习必备欢迎下载按位取反运算为单目运算,用来求一个位串信息按位的反,即那些为 0 的位,结果为 1; 而那些为 1 的位,结果为几例如, 7 的结果为 0xfff8 ;取反运算常用来生成与系统实现无关的常数;如要将变量 x 最低 6 位置成 0,其余位不变,可用代码 x= x& 077 实现;以上代码与整数 x 用 2 个字节仍为用 4 个字节来实现无关;当两个长度不同的数据进行位运算时例如long 型数据与int 型数据 ,将两个运算对象的右端对齐进行位运算; 假如短的数为正数,高位用 0 补满 ;假如短的数为负数,高位用 1 补满;假如短
39、的为无符号整数,就高位总为用0 补满;位运算用来对位串信息进行运算,得到位串信息结果;如以下代码能取整型变量k 的位串信息的最右边为亚的信息位:k-lk&k ;位左移运算符 <<位左移运算符用来将左运算对象 整型或字符型数据作为二进位信息串作整体向左移动,移动的位数由右运算对象指定,右端空出的位用0 补充,得到新的位申信息;例如014<<2,结果为 060,即 48;位右移运算符 >>位右移运算将一个位串信息向右移指定的位,右端移出的位的信息被丢弃;例如 12>>2,结果为 3;与左移相反,对于小整数,每右移1 位,相当于除以人在右移时,需要留意符号位问题;对无符号数据,右移时,左端空出的位用 0 补充;对于带符号的数据,假如移位前符号位为刚正数 ,就左端也为用 0 补充 ; 假如移位前符号位为 1 负数 ,就左端用 0 或用 1 补充,这取决于运算机系统;对于负数右移,称用 0 补充的系统为 “规律右移 ”,用 1 补充的系统为 “算术右移 ”;以下代码能说明读者上机的系统所采纳的右移方法:p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业软件外包合同
- 2025建筑室内设计合同协议书范本
- 2025年北京房屋买卖合同范本
- 2025合同法深度解析:无固定期限合同条款详解
- 苏州工业园区翰林小学等苏教版三年级数学下册单元试卷15份
- 二零二五版地质勘察技术服务合同
- 二零二五二手房公积金贷款买卖合同书
- 水田承包使用权转让合同书二零二五年
- 二零二五海外工程项目投标策略及合同管理
- 二零二五家庭居室装饰装修合同书
- 110kV变电站典型二次回路图解
- 动物类-中药鉴定课件
- 沪教2011版五年级美术下册《装点我们的生活》评课稿
- 股东出资协议书(公司未成立之前注册股期股回购)
- 21 青蛙卖泥塘(一等奖创新教案)
- 《矿业权评估指南》
- 专题01《水银花开的夜晚》 高考语文二轮复习
- 电工日常巡视维修工程记录
- GB/T 14388-1993木工硬质合金圆锯片
- 二月份循证护理查房课件
- JJF(湘) 09-2018 纯水-超纯水系统监测仪表(电导率)计量校准规范-(高清现行)
评论
0/150
提交评论