第15章底层程序设计_第1页
第15章底层程序设计_第2页
第15章底层程序设计_第3页
第15章底层程序设计_第4页
第15章底层程序设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、大家好!C语言提供了6个位运算符,这些运算符可以用于在整数和字符上进行按位运算。15.1 15.1 位运算符位运算符表15.1 位逻辑运算符 运算符 含义 按位求反 & 按位与 | 按位或 按位异或1. 二进制反码或按位取反: 是一个单目运算符,它用来对一个二进制数按位取反,即将0变为1,将1变为0。例如,对十进制数28求反,需要先求出其对应的二进制数,再对该二进制数求反。28对应的二进制数为:00011100,对其求反后结果如图15.1所示。图15.1 对28求反2. 按位与:&二进制运算符&通过对其两个操作数逐位进行比较来产生一个新值。对于每个二进制位,只有两个操作

2、数的对应位都为1时结果才为1,否则为0。如果用真、假来描述,那就是只有当两个位操作数都为真时结果才为真,否则结果为假。例如,求5&9应该先将它们各自转换为二进制数,然后再进行按位与,如图15.2所示。 图15.2 5&93. 按位或:|二进制运算符 | 通过对两个操作数逐位进行比较来产生一个新值。对于每个二进制位,如果任意一个操作数中对应的位为1,那么结果位就为1。如果用真、假来描述,那就是如果任意一个操作数为真或者两个都为真,那么结果就为真,否则为假。例如,求5|9应该先将它们各自转换为二进制数,然后再进行按位或,如图15.3所示。 图15.3 5|91. 清零将二进制数00

3、110101清零:2. 取指定位取整数x的低4位,x=00110101:3. 保留特定位将整数x的第3位、第4位保留下来,x=00110101:4. 打开位打开整数x的第1位,x=00110101,即将第1位设置为1,并保留其它所有位不变:5. 关闭位关闭整数x的第1位,x=00110101,即将第1位设置为0,并保留其它所有位不变:6. 转置位转置整数x的第1位和第2位,x=00110101,即打开第1位,关闭第2位:1. 左移运算符:左移运算符 将其左侧操作数中的每位都向左移动,移动的位数由其右侧的操作数指定。空出的位使用0来填充,并且将移出左侧操作数最高位的那些位丢弃掉。下面是使用左移运

4、算符的例子: (10001010) l右移位运算符将其左侧操作数中的每位都向右移动,移动的位数由其右侧的操作数指定。将移出左侧操作数最低位的那些位丢弃掉。l对于无符号整数来说,使用0填充左端空出的位。l对于有符号整数来说,其结果依赖于具体的机器。空出的位可能用0填充,也可能使用符号位(最左端的位)的值来填充。对于带符号整数,有如下结果:(10001010) 2 /*最高位为符号位*/(00100010) /*对某些系统,使用0 来填充高位*/(11100010) /*对某些系统,使用符 号位的值来填充高位*/对于无符号整数,有如下结果:(10001010) 2 /*无符号整数*/(001000

5、10) /*右移后的结果 */l移位运算符能够提供快捷、高效的对于2的幂的乘法和除法。l左移1位相当于乘以2,右移1位相当于除以2。l假设number是一个整型变量,则有:number n 如果number非负,则用number除以2的n次幂位字段是一个signed int或unsigned int中一组相邻的位。位字段由一个结构体来声明创建,该结构体声明为每个字段提供字段名,并指定字段的宽度。例如,下面的声明建立了4个1位的字段:struct unsigned int aaa: 1; unsigned int bbb: 1; unsigned int ccc: 1; unsigned int ddd: 1; abcd;在结构体变量abcd中包含了4个1位的字段。可以使用结构体的成员运算符将各个成员值赋给单独的字段。abcd.aaa = 0;abcd.bbb = 1;因为abcd中的每个字段都只有1位,因此每个字段只能被赋值为1或者0。结构体变量abcd被存储在一个int类型大小的存储单元中,但是仅有其中的4位被变量使用。l本章介绍了C语言中常用的位运算符,包括按位求反、按位与、按位或、按位异或以及左移和右移运算符。l位逻辑运算符有一些特殊的用途,例如清零、取指定

温馨提示

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

评论

0/150

提交评论