




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年数学浙教版八下素养检测卷-学生用卷
- 工业废水处理与环境影响评价研究
- 工业废水处理技术与工艺
- 工业安全监控的机器学习技术应用
- 工业建筑设计及产能优化
- 工业机器人技术及其发展动态
- 工业机器人技术及产业发展
- 工业污染的防治与控制
- 工业自动化中的智能灌装机技术
- 工业设计中的用户体验与界面美学
- JJF(浙) 1156-2019 过氧化氢检测仪校准规范
- 省道公路养护改善工程施工组织设计
- 重庆市2024+年春高二(下)期末联合检测+语文试卷(含答案)
- 临终关怀中的文化敏感性
- 运动改造大脑阅读记录
- DL∕T 2011-2019 大型发电机定子绕组现场更换处理试验规程
- 从黄土高原视角品黄河生态变迁智慧树知到期末考试答案章节答案2024年西北工业大学
- 广东省东莞市2023-2024学年高二下学期7月期末英语试题
- 2024年云南省职业院校技能大赛(中职组)植物嫁接赛项考试题库(含答案)
- 河北省建设项目概算其他费用定额
- 肿瘤科护理组长竞聘
评论
0/150
提交评论