《C语言的位运算》PPT课件.ppt

《C语言的位运算》PPT课件.ppt

ID:51644279

大小:250.00 KB

页数:11页

时间:2020-03-27

《C语言的位运算》PPT课件.ppt_第1页
《C语言的位运算》PPT课件.ppt_第2页
《C语言的位运算》PPT课件.ppt_第3页
《C语言的位运算》PPT课件.ppt_第4页
《C语言的位运算》PPT课件.ppt_第5页
资源描述:

《《C语言的位运算》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、9.1位运算符与位运算9.2位 段9.3程序设计举例第九章 位运算19.1位运算符与位运算位运算是指进行二进制位的运算,是C语言有别于其他高级语言的一种强大的运算,它使得C语言具有了某些低级语言的功能,主要用于系统程序或控制程序中,例如设备驱动程序、磁盘文件管理程序等。位运算与位段结构位是指二进制数的一位,其值为0或1。位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。29.1.2按位取反运算符9.1位运算符与位运算位运算符主要有:~、<<、>>、&

2、、

3、、^。~(按位“取反”)运算规则为:~0=1,~1=0例如,~7的值为-8。在用位运算符进行数的运算时,数是以补码的形式参加运算的。9.1.1位运算符39.1位运算符与位运算<<(“左移”)运算功能:将一个数的各个二进制位全部向左平移若干位,左边移出的部分予以忽略,右边空出的位置补零。例如,3<<2,将3左移2位,右边(最低位)补0,结果为12,相当于3×2×2的结果。9.1.3左移运算符49.1位运算符与位运算>>(“右移”)运算功能:将一个数的各个二进制位全部向右平移若干位,右边移出的部

4、分予以忽略,左边空出的位置对于无符号数补零,对于有符号数,若原符号位为0,则补0,若原符号位为1,则全补1。也就是右移后保持这个数的正负符号不变。例如,-3>>2,将3右移2位,左边(最高位)补1,结果为-1。9.1.4右移运算符5&(按位“与”)运算规则:0&0=0,0&1=0,1&0=0,1&1=1例如,-5&3的值为3。其中-5的补码(为简便起见,用8位二进制表示)为11111011,3的补码为00000011,按位与的结果为00000011,即值为十进制数3。9.1位运算符与位运算9.1

5、.5按位与运算符69.1.6按位或运算符9.1位运算符与位运算9.1.7按位异或运算符

6、(按位“或”)运算规则:0

7、0=0,0

8、1=1,1

9、0=1,1

10、1=1例如,-5

11、3的值为-5。-5与3相位或后得11111011,其真值为-0000101,即-5。^(按位“异或”)运算规则为:0^0=0,0^1=1,1^0=1,1^1=0例如,-5^3的值为-8。79.2位 段9.2.1位段结构体说明位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储

12、空间,又可方便操作。位段结构中位段的定义格式为:unsigned<成员名>:<二进制位数>例:structbytedata{unsigneda:2;/*位段a,占2位*/unsigned:6;/*无名位段,占6位,但不能访问*/unsigned:0;/*无名位段,占0位,表下一位段从下一字边界开始*/unsignedb:10;/*位段b,占10位*/inti;/*成员i,从下一字边界开始*/}data;89.2位 段9.2.2位段的引用位段数据的引用,同结构体成员中的数据引用一样,但应注意位段的

13、最大取值范围不要超出二进制位数确定的范围,否则超出部分会丢弃。关于位段数据,注意以下几点:(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。(2)可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。(3)可以定义无名位段。(4)位段的长度不能大于存储单元的长度。(5)位段无地址,不能对位段进行取地址运算。(6)位段可以以%d,%o,%x格式输出。(7)位段若出现在表达式中,将被系统自动转换成整数。例如:dat

14、a.a=2;但data.a=10;就超出范围(a占2位,最大3)99.3程序设计举例例编程将一个16进制整数(占2字节)的各位循环左移4个二进制位,如2fe1循环左移4个二进制位后为fe12。分析:可先取出16进制整数的最高4个二进制位,然后将该整数左移4个二进制位,最后将先前取出的最高4个二进制位放入低4个二进制位位置。具体步骤为:(1)取出16进制整数x的最高4个二进制位至y:y=x>>(16-4)&0xf。(2)将该整数x(占2字节)左移4个二进制位:x=(x<<4)&0xffff。(3)

15、将先前取出的最高4个二进制位放入低4个二进制位:x=x

16、y。10#include“stdio.h”main(){intx,y;printf(“请输入16进制整数:”);scanf(“%x”,&x);y=x>>(16-4)&0xf;x=(x<<4)&0xffff;/*16位的C语言程序不需要“按位与”0xffff*/x=x

17、y;printf(“循环左移4个二进制位得:%x”,x);}程序运行结果如下:请输入16进制整数:2fe1循环左移4个二进制位得:fe129.3程序设计举例11

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。