版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档编码 : CK2V3O6O6A10 HB6A6K2G1R6 ZU4P8M6L8P22.1 C 语言的数据类型 运算机软考程序员备考程序设计学问点 2 数据类型包含两方面的内容:数据的表示和对数据加工的操作;数据的全部可能表示构成数据类型的 值的集合;数据全部合理的操作构成数据类型的操作集合; 在 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.枚举类型 当变量只取很少几种可能的值,并分别用标识符对值命名时,这种变量的数据类型可用枚举类型来表 示;如变量表示一个星期中的某一天,就可用校举
4、类型描述该变量的类型,并以星期见的英文名对日期命 名,对应的变量取某日的星期名称为其值; 类型 用保留字 VOid 表示的数据类型有两种完全相反的意思,或表示没有数据 没有结果,没有形式参数 , 或表示某种任意类型的数据 如又与指针结合,用 void;标记 ; void 表示空类型, void ;表示任意数据的 指针类型,程序如要使用 void;类型的数据,应当将它强制地转换成某种详细的指针类型; 2.2 常量 常量是指程序运行过程中其值不行转变的数据;常量按其值的表现形式可分为如下类型:整型常量, 实型常量,字符型常量,字符串常量和指针常量; 1.整型常量 C 语言整型常量的书写形式有三种:
5、 1十进制整数;通常整数的写法,如 0, 123, -45 ,+25; 2八进制整数;以数字符 0 开头并由数字符 0-7 组成的数字符序列,为八进制整数;如 0123 表示八 进制整数,其值等于十进制整数 l*8*8+2*8+3=83 ; 3十六进制整数;十六进制整数以 OX 或 OX 开头的整数;表示十六进制数的数字将有 16 个,它们 分别是 0-9 和 A, B,C, D, E, F,其中六个英文字母也可以小写;例如, 0 x123 表示十六进制整数,其 值等于十进制整数 1*16*16+2*16+3=291; oxabc ,其值等于 10*16*16+11+16+12=2748 ;
6、整型常量也可在整数之后接上字母 L 或 l ,特别指明它是 long 型的; 整型常量也可在整数之后接上字母 U 或 u,特别指明是不带符号的, 即是 unsigned 型的;为指明不带 第 1 页,共 10 页符号的 long 型整型常量,就需在整数之后同时加上字母 U 和 L,说明该整型常量是 unsigned long 型的; 整型数据以二进制形式存放, 要求短整型数据的字节数不能大于整型数据的字节数 ;整型数据的字节数 不能大于长整型数据的字节数;对于带符号的整数,用二进制代码的最左二进位作为数的符号, 1 表示负 数, 0 表示正数; 2.实型常量 C 语言实型常量的一般书写格式是:
7、 正负号 整数部分 .小数部分 指数部分 其中,正负号可有可无,无正负号即为正实数 ;整数部分和小数部分都是十进数字符序列 ; 指数部分是 e或 E后接上正负号 正号可有可无 和十进数字符序列; 按上述格式书写实型常量,另有两条限制: l 整数部分和小数部分可以任选,但不行同时都没有; 2小数点和指数部分不行以同时都没有; ANSIC 引入两个后缀字符,用 f 标识 float 型实型常量,用 1 或 L 标识 fong double 型实型常量,而 无后缀符的实型常量被认为是 double 型的实型常量; 要留意实型常量的有效位数, 不要以为写上的数字都能被运算机所接受; 在大多数 C 系统
8、中,一个 float 型实型数据在内存中占用 4 个字节 32 个二进位 ,约 7 个十进位有效数字,能表示确定值最接近 0 的实数 约为 10 的 -38 次方,最大的实数约为 10 的 38 次方;例如,对于代码 ,在大多数系统 中,实型常量 的最终两位数字是无效的; double 型实型数据占用 8 个字节 64 个二进位 ,约 15 个十进位有效数字, 能表示确定值最接近 0 的实 数约为 10 的一 308 次方,最大的实数约为 10 的 308 次方; 3.字符常量 字符型数据用于表示一个字符值,但字符型数据的内部表示是字符的 ASCll 代码 8 位二进位的二进制 形式 ;字符型
9、数据的类型符用 char 来标记;字符型常量的书写方法: l 一般字符 - 用单引号括起一个字符;如 a,b,B, $; 2特别字符 - 用 字符或字符列采标记;这种标记方法有三种: 特定字符 ,标记特定把握符,如换行符用 n来标记; 1至 3个人进制数字 ,以人进数表示字符的 ASCll 代码; X1至 2个十六进制数字符 ,以十六进制数表示字符的 ASCll 代码; 由于字符以代码存放,所以也可把字符值当作一个小整数;反之,一个小整数也可把它懂得为是某个 字符的代码,把它当作一个字符; 4.字符串常量 字符串常量用来表示一个字符序列,它的书写方法用双引号括住字符序列;例如: ”ABC”,
10、”等;字 符串常量 “是”一个空字符串,即不含任何有效字符的字符串;字符串数据次序储备字符串字符的 ASCll 代 码,并在最终字符后面储备一个 H 进制代码全为 0 的特别字符,用来标记字符串的终止;所以字符串常量 “ 1234在”内存占 5个字节,而空字符串只占一个字节;字符串中的字符也可以是转义字符; 5.符号常量 为了提高程序的可读性,常量可以用以下形式命名: # define 标识符 常量 其中的标识符也称作符号常量, 这里的常量是前面所述的某种常量, 或是程序中前面定义的符号常量; 例如: # define MAXN 100 变量 变量是程序执行时,其值答应转变的数据对象,用来储备
11、输入数据,运算的中间结果和程序的最终结 果等; 第 2 页,共 10 页1.变量定义 变量用标识符命名,通过变量定义引入的变量名习惯用英文字母开头, C 系统可能也会预定义一些标 记系统特性的变量, 系统定义的变量习惯用下线字符开头; 变量的数据特性由变量定义时指定的类型确定; 如定义指定数据类型的变量 即不在指定数据类型基础上定义新数据类型的变量,如指定类型的指针,数组 等 ,这种变量定义的句法为: 数据类型符变量名 1,变量名 2, ; 编绎系统依据变量的数据类型确定存放它的值所需要的内存字节数,变量值的内部表示形多也由其类 型确定; 2.内部变量和外部变量 变量按其定义显现在程序中的位置
12、不同分成两类:在函数内定义的变量称为内 部变量,而在函数之外 函数之间 定义的变量称为外部变量; 3.变量的储备类型 系统按程序对运算机储备空间使用的不同要求,将内存分成不同用途的块,与运算 机的寄存器一起将 储备空间分成不同类别;而 C 程序通过指定变量的储备类说明变量的不同的使用要求,让系统将变量支配 于不同的内存块或寄存器;如在上述变量定义形式中,仍要指定变量的储备类型,变量定义的形式为: 储备类型符数据类型符变量名 1,变量名 2, ; 其中储备类型有四种: auto自动的 , static静态的 ,register 寄存器的 和 extem 外部的 ; 外部变量只答应被指定为静态的,
13、或不指定其储备类型;内部变量可以被指定为自动的或静态的,或 寄存器的,或不指定储备类型,如不指定储备类型,它就是自动的; 自动变量是内部变量,在函数内或复合语句内定义,它们被支配在堆栈区; 静态变量可以是内部变量,也可以是外部变量;静态变量表示永久性和专用性,即在程序执行过程中 始终存在,局限于定义它的函数 内部静态变量 或局限于定义它的程序文件中那些函数 外部静态变量 ;静 态变量被支配在与程序相联的内存数据区; 寄存器变量是函数的内部变量或参数,也是一种暂时性的变量;如因函数使用特别频繁程序期望将它 支配在寄存器,程序就可将变量指定为寄存器的,但编译系统也可能把它当作动变量处理; 指定储备
14、类型是外部的,实际 b 是告知编译器,这个变量是一个外部变量,在这里要使它,而它的定 义或在别的程序文件或在后面的程序段等别的地方; 4.变量的作用域和生存期 变量的使用要留意变量的作用域 可使用范畴 和生存期 存在的时间 ;C 语言规定,内部变量的作用域 只局限于定义它的函数或复合语句;自动的内部变量是一种暂时性变量,函数被调用时支配,函数执行结 束时释放;而静态变量在程序执行前支配,直至程序终止才释放;由于静态的内部变量在函数终止时,依 旧保持储备,函数上一次调用时留在内部静态变量中的结果能被下一次调用时连续使用;外部变量也在程 序启动前支配,直至程序执行终止释放;一般的外部变量能供应别的
15、源程序文件中的函数使用 要对它作外 部说明 ;静态的外部变量只能供定义它的源程序中的全部函数专用; 由于外部变量能供整个程序使用, 所以 外部量不能重名; 5.变量定义初始化 变量定义是对变量的储备空间提出一种要求,储备空间支配后,变量的初值通常是不拔的;但程序可 以要求系统在为变量支配储备空间同时为变量设定初值,这就是变量定义初始化;在变量的定义形式中, 在变量名之后接上 “=初值表达式 ”,该初值表达式的值就作为该变量的初值; C 语言另有商定,对于静态变 量和外部变量,如定义它们时未指定初值,系统给它们设置成全部二进位都是 0 的值;以下是各种变量定 义的例子: l 定义整型,并对其初始
16、化; Short minInt =100; int i= l ,j= 2 , k=3; 第 3 页,共 10 页long p=-1L ,q=1234567890L; unsigned usi= 254u; unsigned long up= 4294967295UL; 2定义字符型变量,并对其初始化; char ch= A; 3定义实型 浮点型,双精度型 变量,并对其初始化; float f=1.23456f; double d=1.2345678op87654; 运算符 每个运算符都代表对运算对象的某种运算,都有自已特定的运算规章,规定运算对象的个数,运算对 象数据类型,以及运算结果的数据类
17、型; C 语言仍规定运算符有不同的优先级和结合性;运算符的优先级 指表达式求值时,按运算符的优先级由高到低的次序运算;如 “先乘除后加减 ”;运算符的结合性是指运算 符要求它的运算对象对它的结合方向;结合性确定了在相同优先级运算符连续显现的情形下运算对象与运 算符结合的次序,通常也是运算次序;如算术运算符的结合性是从左至右的,就连续的加减或连续的乘除 是从左向右运算;而赋值运算符的结合性是从右至左的,就连续的赋值运算是从右向左逐个运算赋值;在 C 语言中,要特别留意某些运算符因运算对象数据类型不同,可能有不同的意义; 1.算术运算符 算术运算符的运算对象是基本数据类型的数据,实现通常的取整,取
18、负,四就运算,求 两整数相除后 的余数的运算和增 1 减 1 运算;特别要留心的是整除运算,求余运算,增 1 运算和减 1 运算; 对两个整型数据执行除运算 / ,称为整除运算,要特别留意的是两个整型数据的整除运算的结果是整 型的,如表达式 3/2 的结果为 1,表达式 2/3 的结果为 0; 求余运算符 % 要求参加运算的两个运算对象均为整型数据,如 5% 3 的值为 2;一般来说,求余运算 所得结果的符号与被除数的符号相同;如 -5%3 的值为 -2, 5%-3 的值为 2; 增 1+ 和减 1- 运算符都是单目运算符, 以整型, 字符型和指针型变量为运算对象, 并转变运算对象 的值;按它
19、们显现在变量之前和之后两种不怜悯形,其作用有微妙的差别; 前缀 + 前缀 +的一般形式是 +变量 例如,如 X 是整型或某种指针类型的变量,就 +X 使变量 X 的值增大 1 个单位,并以 X 的新值作为 表达式 “+X”的运算结果;如以下语句执行前,变量 X 的值为 1,语句 j= + x; 使变量 X 的值变成 3,变量 j的值也为 3;这里所说的一个 “单位 ”是指:假如 X 是整型的,就 +x 就是 一般的说明: “x的值比原值增加 后缀 + 后缀 +的一般形式是 变量 + 1;x 是指针, 它指向数组的某个元素, 就 +x 使它指向数组的后一个元素; 表达式 “变量 +”运算结果是该
20、变量的原先值,在确定了表达式结果之后,用与前缀 +相同的方式增大 该变量的值 1 个单位; 前缀 +和后缀 +都能使变量的值增加 1 个单位,但是它们所代表的表达式的值却不相同,前者是变量 增加后的值,后者是变量仍未增加的原先值;例如 i,j 为整型变量,且 i 的值为 4,以下分别用和表记 的代码将使 j 获得不同的值: j=+i ; j= i+ 都使变量 i 的值变为 5,但使 j 的值为 5;使 j 的值为 4; 第 4 页,共 10 页前缀 - 前缀 - 的一般形式是 - 变量 前缀 - 使变量的情削减 或后退 l 个单位,并以变量的新值为表达式 后缀 - 后缀 - 的一般形式是 变量
21、 - “- 变量 ”的运算结果;后缀 - 作用于变量时,以该变量的值作为表达式 “变量 -”的运算结果,即先取其值为结果,然后用与前缀 - 相同的方式削减该变量 1 个单位; 后缀 - 与前缀 - 的区分类似于后缀 +与前缀 +的区分;类似前面的例子,照旧假定 i 的值为 4,两代 码 j= -i j=i- 都使变量 i 的值变为 3,但使 j 的值为 3;使 j 的值为 4; 使用 +和 - 运算符时,其运算对象仅适用于变量,不能是常量等数据值表达式;如 4+ 或i+j+ 都是 不合法的; +和 - 是带有副作用的运算符;建议读者不要在一个表达式中对同一变量多次使用这样的运算符,可 能会发生
22、意想不到的结果;如 i 的值为 4,对表达式 i+i+ 可能认为它的值为 9+5;然而在 TURBO C 和 MS C 系统中,它的值为 8;而表达式 +i+i 的值为 12 ;这是由于这些系统在处理 i+ 时,先使用 i 的原值运算整个表达式,然后再让 i 连续两次 自增 ;处理 +i 时,在运算表达式值之前,先对 为 8,后一个表达式的值为 12; i 执行两次自增,然后才运算表达式;放前一个表达式的值 因+ 与+- 与 -类似 是两个不同运算符, 对于类似表达式 i+j 会有不同的懂得: i+ j 或 i+j ; C 编译的处理方法是自左至右让尽可能多的字符组成一个合法的句法单位 如标识
23、符,数字,运算符等 ;因 此, i+j 被说明成 i+j ,而不是 i+j ; 增 1+ 和减 1- 运算符的结合方向是自右至左的; 2.关系运算符 用于关系运算的关系运算符有六个: 大于 ,= 大于等于 ,=等于 和.= 不 等 ;关系运算是双目运算, 它的运算对象可以是基本数据类型的数据, 用于比较大小 ;或是指向同一个数组 两元素的指针,用于比较前后关系;在高级语言中,习惯称条件中意为 “真 ”,不中意为 “假 ”;特别在 C语 言中商定:比较后,条件中意 真 的值为 1;比较后,条件不中意 假 的值为儿用关系运算符将两个子表达式 连接起来,构成关系比较表达式,求得结果为 1真 或 0假
24、 ; 六个关系运算符中, 运算符 ,= 的优先级高于运算符 =,.= ;如表达式 Xy=Cy=CD ; 另外,为便于描述两个复杂算式的比较,关系运算符的优先级低于算术运算符的优先级; 设有 i=1, j=2,k=3 ,就表达式 ij的值为 “假”,即表达式的值为 0;表达式 i=kj的值为 “真 ”,即表达 式的值为 1先运算 kj,其值为 1,等于 i;i+jK 的值为 “假”,即表达式 的值为 0; 关系运算符的结合方向是自左至右;仍设 为 1,再运算 11,结果为 0; 3.规律运算符 用于规律运算的规律运算符有三个: i=1 ,j=2 ,k=3,就表达式 kji 的值为 0先运算 kj
25、 ,其值 第 5 页,共 10 页& 规律与 , |规律或 , . 规律非 其中运算符 “&”和“|是”双目运算符,要求有两个整型或字符型的运算对象,用于连接多个判定条件, 构成更复杂的条件判定 ;运算符 “. 是”单目运算符,用于描述对给定条件的否定判定; 规律运算产生的结果也只能是 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/x2 且 x.=0,应写成: x.=0 & y/x2 当 X 为 0 时,不会运算 y/X ;而写成: y/X2 & X.=0 是不正确的,由于当 X 为 0 时,不能运算 y/X ;对于规律或也有类似情形; 由于上述性质,在运算连续的规律与和规律或运算时,实际上不分优先级,而是次序从左至右运算; 在运算规律与运算时,如有左运算对象的值为 0,就不再连续运算规律与运算,并立刻以 0 为
28、规律与运算 的结果 ; 在运算规律或运算时,如有左运算对象的值为 1,就不再连续运算规律或运算,并立刻以 1 为规律 或运算的结果;在次序运算规律表达式的过程中,一旦确定了表达式的最终结果,就不再连续运算; 4.赋值运算符 赋值运算的最简洁形式是 变量 =表达式 其中 “=”是赋值运算符;赋值运算的执行过程是: l 先运算赋值运算符右端的表达式 ; 2 如表达式的类型与赋值运算符左边的变量类型不同 成变量的类型 ; 仅限于基本类型 ,将表达式值的类型自动转换 3将求得的值赋给变量,即储备到由变量所占的内存中; 简洁地说,运算表达式的值,将该值赋给变量; 赋值运算也有结果,经赋值运算后,赋值表达
29、式具有赋值后赋位运算符左边变量同样的类型和值;因 赋位运算有值,所以可以进一步参加运算,特别是可以再赋植给其它变量;赋值运算符的结合性是 边有至 左”的,当连续有多个赋值运算时,就从右至左逐个赋值;如有变量定义: int k; double x; 就赋值表达式: x= k= 是先将实数 自动转换成整数 3 赋给整型变量 k,然后又将整数 3 自动转换成实数 赋给实型变量 X;所以, k 的值是 3, X 的值是 ; 在程序中,常常遇到在变量当前值的基础上作某种修正的运算;如 这类运算的特点是:变量既是运算对象,又是赋值对象;为防止对同一储备对象的地址重复运算, C第 6 页,共 10 页语言弓
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假如表达式
32、 1 的值非 0真,就运算表达式 2,并以表达式 2 的值为条件运算的结果 不再运算表达 式 3; 3假如表达式 1 的值为 0假,就运算表达式 3,并以表达式 3 的值为条件运算的结果 不再运算表达 式 2; 例如,表达式 Xy.X : y 假如 xy 条件为真,就条件运算取 x 值,否就取 y 值; 条件运算符 .:的优先级高于赋值运算符, 低于规律运算符,也低于关系运算符和算术运算符; 例如, 表达式 max= X y.X : y+ l 等效于表达式 max=xy .x : y+l 条件运算符的结合性为 “自右至左 ”;例如,表达式 Xy.X : uV.u :V 等效于表达式 Xy.X
33、: uV.u : V 7.长度运算符 长度运算以字节为单位给出其运算对象所需 或所占 的字节数,运算对象可以是任何类型的数据对象 或数据类型;它是依据对象的类型来确定对象 所需 的字节数的; 第 7 页,共 10 页长度运算有两种书写形式: sizeof 变量名或 sizeof 类型名 假如有某种类型为江的变量 V ,其中 t 可以是系统供应的类型或用户自己定义的类型,可以是简洁的, 也可以是数组,结构等;就 sizeof V 就是变量 V 所占的字节数;如有 int j; double x; 表达式 sizeof j 和 sizeOf x 分别是变量 j 和 x 所占的字节数; sizeof
34、t是系统为支配一个类型为 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 按位与运 算有两种典型用法;一是取一个位率信息的某几位,如以下代码截取;的最低 7 位, &0177t
36、二是让某变量 保留某几位,其余位设置成 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 的其它位相同,可用规律或运算 017|j;如要把这结果赋给变
37、量 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; 按位取反运算符 第 8
38、页,共 10 页按位取反运算是单目运算,用来求一个位串信息按位的反,即那些为 0 的位,结果是 1; 而那些为 1 的 位,结果是几例如, 7 的结果为 0 xfff8 ;取反运算常用来生成与系统实现无关的常数;如要将变量 X 最 低 6 位置成 0,其余位不变,可用代码 X= X& 077 实现;以上代码与整数 X 用 2 个字节仍是用 4 个字 节来实现无关; 当两个长度不同的数据进行位运算时 行位运算; 假如短的数为正数, 高位用 就高位总是用 0 补满; 例如 long 型数据与 int 型数据 ,将两个运算对象的右端对齐进 0 补满 ;假如短的数为负数, 高位用 1 补满;假如短的为
39、无符号整数, 位运算用来对位串信息进行运算,得到位串信息结果;如以下代码能取整型变量 k 的位串信息的最右 边为亚的信息位: k-lk&k ;位左移运算符 位左移运算符用来将左运算对象 整型或字符型数据 作为二进位信息串作整体向左移动,移动的位数 由右运算对象指定,右端空出的位用 0 补充,得到新的位申信息;例如 014 位右移运算将一个位串信息向右移指定的位, 右端移出的位的信息被丢弃; 例如 122,结果为 3;与 左移相反,对于小整数,每右移 1 位,相当于除以人在右移时,需要留意符号位问题;对无符号数据,右 移时,左端空出的位用 0 补充;对于带符号的数据,假如移位前符号位为刚正数 ,就左端也是用 0 补充 ; 假如移位前符号位为 1 负数 ,就左端用 0 或用 1 补充,这取决于运算机系统;对于负数右移,称用 0 补充 的系统为 “规律右移 ”,用 1补充的系统为 printf ”%dn”, -24; “算术右移 ”;以下代码能说明读者上机的系统所接受的右移方法: 者输出结果为一 l ,是接受算术右移 ;输出结果为一个大整数,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件开发公司安全代码审查方案
- 国际航班疫情防控工作方案
- 金融机构安全防护方案
- 食品科技企业配送服务方案
- 热力管道沟槽开挖周边环境保护方案
- 眼镜店开业策划方案
- 营销方案某市医科大学附属医院同泰住院部预应力工程施工方案
- 撰写科技文稿行业营销策略方案
- 玩具家具项目运营指导方案
- 卡车修理行业营销策略方案
- 云南小学地方课程二年级上册动物王国教学设计
- 管辖权异议申请书电子版下载
- 学校校园欺凌师生访谈记录表六篇
- 耳鼻喉科手术分级目录2022
- 课后习题答案-电机与拖动-刘锦波
- GB/T 11836-2023混凝土和钢筋混凝土排水管
- 第三章 继承优良传统 弘扬中国精神
- 中国阴道炎诊治课件
- 微生物生物转化
- 冠心病的护理心得体会(11篇)
- 高中数学 人教A版 选修一 空间向量基本定理 课件
评论
0/150
提交评论