首页 第9章 C语言的位运算

第9章 C语言的位运算

举报
开通vip

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

第9章 C语言的位运算
C语言教学幻灯片版第九章 位运算第九章 位运算9.1 位运算符与位运算9.2 位 段9.3 程序设计举例C语言教学幻灯片版第九章 位运算9.1 位运算符与位运算 位运算是指进行二进制位的运算,是C语言有别于其他高级语言的一种强大的运算,它使得C语言具有了某些低级语言的功能,主要用于系统程序或控制程序中,例如设备驱动程序、磁盘文件管理程序等。位运算与位段结构 位是指二进制数的一位,其值为0或1。 位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。 含有位段的结构体类型称为位段结构。C语言教学幻灯片版第九章 位运算9.1.2 按位取反运算符9.1 位运算符与位运算位运算符主要有:~、<<、>>、&、|、^。~(按位“取反”)运算规则为: ~0=1,~1=0例如, ~7的值为-8。 在用位运算符进行数的运算时,数是以补码的形式参加运算的。9.1.1 位运算符C语言教学幻灯片版第九章 位运算9.1 位运算符与位运算<<(“左移”)运算功能:将一个数的各个二进制位全部向左平移若干位,左边移出的部分予以忽略,右边空出的位置补零。例如,3<<2,将3左移2位,右边(最低位)补0,结果为12,相当于3×2×2的结果。9.1.3 左移运算符C语言教学幻灯片版第九章 位运算>>(“右移”)运算功能:将一个数的各个二进制位全部向右平移若干位,右边移出的部分予以忽略,左边空出的位置对于无符号数补零,对于有符号数,若原符号位为0,则补0,若原符号位为1,则全补1。也就是右移后保持这个数的正负符号不变。例如,-3>>2,将3右移2位,左边(最高位)补1,结果为-1。9.1 位运算符与位运算9.1.4 右移运算符C语言教学幻灯片版第九章 位运算&(按位“与”)运算规则: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 按位与运算符C语言教学幻灯片版第九章 位运算^(按位“异或”)运算规则为:0^0=0,0^1=1,1^0=1,1^1=0例如,-5^3的值为-8。9.1.6 按位或运算符9.1 位运算符与位运算9.1.7 按位异或运算符|(按位“或”)运算规则:0|0=0,0|1=1,1|0=1,1|1=1例如,-5|3的值为-5。-5与3相位或后得11111011,其真值为-0000101,即-5。C语言教学幻灯片版第九章 位运算 位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。位段结构中位段的定义格式为:unsigned<成员名>:<二进制位数>9.2 位 段9.2.1 位段结构体说明例:structbytedata{unsigneda:2;/*位段a,占2位*/unsigned:6;/*无名位段,占6位,但不能访问*/unsigned:0;/*无名位段,占0位,表下一位段从下一字边界开始*/unsignedb:10;/*位段b,占10位*/inti;/*成员i,从下一字边界开始*/}data;C语言教学幻灯片版第九章 位运算 位段数据的引用,同结构体成员中的数据引用一样,但应注意位段的最大取值范围不要超出二进制位数确定的范围,否则超出部分会丢弃。关于位段数据,注意以下几点:(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。(2)可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。(3)可以定义无名位段。(4)位段的长度不能大于存储单元的长度。(5)位段无地址,不能对位段进行取地址运算。(6)位段可以以%d,%o,%x格式输出。(7)位段若出现在表达式中,将被系统自动转换成整数。9.2 位 段9.2.2 位段的引用例如: data.a=2;  但data.a=10;就超出范围(a占2位,最大3)C语言教学幻灯片版第九章 位运算例 编程将一个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)将先前取出的最高4个二进制位放入低4个二进制位:x=x|y。9.3 程序设计举例C语言教学幻灯片版第九章 位运算#include“stdio.h”main(){intx,y;printf(“\n请输入16进制整数:”);scanf(“%x”,&x);y=x>>(16-4)&0xf;x=(x<<4)&0xffff;  /*16位的C语言程序不需要“按位与”0xffff*/x=x|y;printf(“循环左移4个二进制位得:%x”,x);}程序运行结果如下:请输入16进制整数:2fe1循环左移4个二进制位得:fe129.3 程序设计举例
本文档为【第9章 C语言的位运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:ppt
大小:250KB
软件:PowerPoint
页数:0
分类:建造师考试
上传时间:2020-03-21
浏览量:0