《精品课程第八章》PPT课件.ppt_第1页
《精品课程第八章》PPT课件.ppt_第2页
《精品课程第八章》PPT课件.ppt_第3页
《精品课程第八章》PPT课件.ppt_第4页
《精品课程第八章》PPT课件.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章 位运算,位运算概念 位运算符 位段,8.1 位运算概念,C语言的位运算是指在C语言中能进行二进制位的运算。 位运算包括位逻辑运算和移位运算: 位逻辑运算能够方便地设置或屏蔽内存中某个字节的一位或几位,也可以对两个数按位相加等; 移位运算可以对内存中某个二进制数左移或右移几位等。,8.2 位运算符,C语言提供了六种位运算,如下表所示:,8.2.1 位逻辑运算符,1.“按位与”运算符& 运算规则: 0 & 0 =0 0 & 1 =0 1 & 0 =0 1 & 1 =1 2.“按位或”运算符| 运算规则:0 | 0 =0 0 | 1 =1 1 | 0 =1 1 | 1 =1,3.“按位异或”运算符 运算规则: 0 0 =0 0 1 =1 1 0 =1 1 1 =0 4.“按位取反”运算符 运算规则: 0=1 1=0,“按位与”运算规则:可以判断一个数据的某一位是否为1;可以保留一个数据中的某些位,屏蔽掉其它位 。,“按位或”运算可以使一个数据的某些位置为1,其位不变。,“按位异或”运算可以使一个数据的某些位翻转,即1变为0,0变为1。,“按位异或”运算可以实现不用临时变量来交换两个变量的值。 a=ab; b=ba; a=ab;,说明:位逻辑运算符的一些用途,8.2.2 移位运算符,1.左移运算符: 运算规则:对运算符左边的运算量的每一位全部左移右边运算量表示的位数,右边空出的位补0。 如:a 4 说明: 左移1位相当于该数乘以2,左移n位相当于该数乘以2n(适合于未发生溢出的情况,即移出的高位中不含有1的情况),2. 右移运算符: 运算规则:对运算符左边的运算量的每一位全部右移右边运算量表示的位数,右边低位被移出去舍弃掉,空出的高位补0还是补1,分两种情况: 第一: 对无符号数进行右移时,空出的高位补0。这种右移称为逻辑右移。 第二: 对带符号数进行右移时,空出的高位全部以符号位填补。即正数补0,负数补1。这种右移称为算术右移。,8.2.3 位赋值运算符,位赋值运算符是位运算符与赋值运算符的结合。,8.2.4 不同长度的数据进行位运算,如果两个数据长度不同进行位运算时(如a&b,而a为long型,b为int型),系统会将二者按右端对齐。 如果b为正数,则左侧应该补满0; 如果b为负数,则左端应该补满1; 如果b为无符号整数,则左侧补满0。,8.3 位 段,位段结构是指结构体成员可以是以位为单位定义 存储长度的结构体。 位段结构的定义形式如下: struct 结构类型名 类型 成员1: 长度; 类型 成员2: 长度; ;,其中: 冒号“:”左面的成员称为位段,冒号右面的长度表示存储位段需要占用字节的位数。,【例1】 struct device : unsigned a:1; unsigned b:2; unsigned c:4; int x; float y; data;,1 4 2 1 16 32,说明: 位段在一个存储单元中的分配因机器而异,在Turbo C中是从低位向高位分配内存。,位段的数据类型必须用unsigned或int类型不能用char和其它类型。,对位段的访问与其它结构体的访问方法一样,可以采用圆点运算符和指向运算符。但必须注意不能对位段进行取地址运算,也不能使用超过位段最大值的数据。,位段的长度不能超越整型边界。,如果某个位段需要从下一个字节开始存放,可以采用: struct unsigned a:1; unsigned :0; unsigned b:2; data;,跳过,空闲,6 2 7 1,位段不能定义位段数组,位段可以用整型格式符输出。 如: printf(“%d,%u,%x”,data.a,data.b,data.c);,位段可以在数值表达式中引用,它会被系统自动地转换成整型数据。,本章小结,C语言的位运算是指在C语言中能进行二进制位的运算。,位运算包括位逻辑运算和移位运算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论