已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章 位运算第一节 位运算符一般用字节(Byte)作为计算机信息的基本单位,一个字节由8个二进制位组成,其中最右边的一位称为“最低有效位”LSB,最左边的一位称为“最高有效位”MSB,如图11-1所示。最低有效位也称第0位,最高有效位也称第7位。第7位第6位第5位第4位第3位第2位第1位第0位表11-1位运算符含义&按位与MSBLSB|按位或10010001按位异或图11-1按位取反右移C语言提供了6种位运算符,如表11-1所示。说明:(1) 位运算符中除了“” 以外,均为二目运算符。(2) 运算量只能是整型或字符型的数据,不能为实型数据。 一、 位“与”运算(&)1运算规则参加运算的两个运算量,如果两个相对应的位都为1,该位结果值为1,否则为0。可记为“见0则0”。10011001&11101010100010002“按位与”的特殊用途(1)清零方法:任何数与一个各个位均为零的数值相与,结果为零。10011001&0000000000000000(2)取一个数X中某些指定位。方法:找一个数,此数的各个位将按照这样原则取值:对应于x要取的位,该数对应位为1,其余位为0。则此数与x按位相与就可以得到X中的某些位。例11-3 假设有X=l0101110B,想取X的低4位。分析:由于欲取X的低4位1,则可以将X与Y=00001111B相与,即可得到X的低4位。则有:10101110&0000111100001110 二、 位“或”运算1运算规则参加运算的两个运算量,如果两个相对应的位中有个为1,则该位结果值为1,否则为0。可记为“见1则1”。11010011|10001010110110112“按位或”的特殊用途:常用来对一个数据的某些位置1: 就是找一个数,此数的各个位将按照这样规则取值:对应于X要置1的位,该数对应位为1,其余位为零0,则此数与X相或就可使X中的某些位置1。例11-5 假设有X=11010010B,想使X的低4位为l。11010010|0000111111011111三、 “异或”运算()1运算规则参加运算的两个运算量,如果两个对应的位为相“异”(值不同),则该位结果值为1。可记为“见同则0”。1000100111101110011001112“异或”的特殊用途:使特定位翻转方法:找个数,此数的各个位将按照这样规则取值:对应于X要翻转的位,该数对应位为1,其余位为零。则此数与X相异或即可。例ll-7 假设有X=10101110B,则想使X的低4位翻转。101011100000111110100001四、 “取反”运算()1运算规则对一个二进制数按位取反,即将0变为l,1变为0。10001011011111002注意事项(1) 单目运算符,具有右结合性;(2) 运算符的优先级别比算术运算符、关系运算符逻辑远符和其运算符都高。 五、 “左移”运算()运算规则:将一个数的各个二进制全部右移若干位。最端低位丢弃,对于无符号数最高位补0;对于有符号数:正数则最高位补0,如果为负数,左端最高位补0还是补1则取决于所用的C编译系统。如果补0则称为“逻辑右移”,补l则称为“算术右移”。 七、 位运算赋值运算位运算符与赋值运算符相结合,就组成复合赋值运算符,表11-2所示。表11-2复合赋值运算符实例等价实例&=a&=ba=a&b| =a | =ba=a | b=a=ba=ab=a=ba=a=a=ba=ab第二节 位段有时信息不需要一个字节,只要一位或几位即可,例如:网络传输协议,控制信息往往只用一个字节中的一位或几位。在C语言中,为了方便访问这些信息,定义了位段(或称“位域”)类型,它是用结构体来表示的。所谓位段是把一个字节中的二进位划分为几个不同的段,并说明每个段的位数。每个段有一个段名,允许在程序中按段名进行操作。这样就可以把几个不同的对象用一个字节的不同二进制位段来表示。 一、 位段的定义位段的定义形式: struct 位段结构位段列表;位段列表的形式:类型说明符 位段名:位段长度例如: struct wd int a:5; int b:2; int c:1; unsigned d:5; 对位段的定义的几点说明:(1) 位段的成员类型必须定义指定为unsigned或int型。(2) 一个位段必须存只能储某一个字节中,不能跨两个字节。如一个内存单元所剩空间不够存放另一位段时,应从下一内存单元起存放该位段。也可以有意使某位段从下一内存单元开始。(3) 位段成员的长度不能大于一个字节的长度,即不能超过8位二进位。(4) 位段可以含无名成员,这时它只用来作填充或调整位置。无名的位段成员是不能使用的。 二、 位段的引用位段的引用和结构成员的引用相同、其一般形式为 位段变量名. 位段成员名位段允许用各种格式输出。例ll-11 位段成员的输出格式。程序如下:(WYS02.C)#include void main() struct unsigned a:1; unsigned b:3; int :3; unsigned c:4; bit,*pb; bit.a=1; bit.b=7; bit.c=15; printf(%d,%d,%dn,bit.a,bit.b,bit.c); pb=&bit; pb-a=0; pb-b=5; pb-a&=0xa; printf(%x %x %xn,pb-a,pb-b,pb-c);运行结果:1,7,150 2 f分析:(1) 程序中定义了位段结构,3个位段成员为a,b,c,说明了此类型的变量bit和指向此类型的指针变量pb。(2) 程序接下来分别给3个位段成员赋值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽2026年国家级检验检测机构资质认定评审员考试试题及答案
- 2026年专升本心理学考试模拟试题及答案
- 商务汇报结构与逻辑优化
- 2026年茂名检验检测机构资质认定评审员考试模拟试题
- 2026年湖北省孝感市农业专业技术职务水平能力测试(水产工程)模拟试题及答案
- 2025年科技保障农业生产 无人机为万亩稻田播种护航
- 2026年湖北省黄石市水利电力工程技术职务水平能力(水利公共基础知识)测试仿真试题及答案
- 【备考2026】江苏省南通市中考模拟数学试卷3(含解析)
- 2026年国家级检验检测机构资质认定评审员考试试题及答案(惠州)
- 北安市七道沟护岸水毁修复工程水土保持报告表
- 2025年湖南省事业单位第一次公开招聘工作人员笔试历年典型考题及考点剖析附带答案详解
- 2026年安徽省体育彩票管理中心编外聘用人员公开招聘11名考试参考题库及答案解析
- 2026重庆物流集团数字科技有限公司招聘3人笔试历年参考题库附带答案详解
- 2026年滨州国有资本投资运营集团有限公司公开招聘国有企业工作人员(15名)笔试参考题库及答案解析
- 2026广西能汇投资集团有限公司校园招聘笔试参考题库及答案解析
- 河南省顶级名校2026届高三年级5月押题导向卷(一)历史试卷(含答案及解析)
- 开封市汽车产业投资有限公司、开封市文心科教投资发展有限公司招聘笔试题库2026
- 上海静安区社区工作者招聘考试真题2024
- 2022届上海市高考各区二模考试英语试卷(共13个区附答案)
- LY/T 1277-1998猎枪弹弹丸
- GB/T 40815.2-2021电气和电子设备机械结构符合英制系列和公制系列机柜的热管理第2部分:强迫风冷的确定方法
评论
0/150
提交评论