欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第9章 C语言的位运算.ppt

    • 资源ID:77419644       资源大小:250KB        全文页数:11页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9章 C语言的位运算.ppt

    C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.19.1位运算符与位运算位运算符与位运算9.29.2位段位段9.39.3程序设计举例程序设计举例第九章第九章 位运算位运算1C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.19.1位运算符与位运算位运算符与位运算位运算是指进行二进制位的运算,是位运算是指进行二进制位的运算,是C C语语言有别于其他高级语言的一种强大的运算,言有别于其他高级语言的一种强大的运算,它使得它使得C C语言具有了某些低级语言的功能,语言具有了某些低级语言的功能,主要用于系统程序或控制程序中,例如设主要用于系统程序或控制程序中,例如设备驱动程序、磁盘文件管理程序等。备驱动程序、磁盘文件管理程序等。位运算与位段结构位运算与位段结构 位是指二进制数的一位,其值为位是指二进制数的一位,其值为0 0或或1 1。位段以位为单位定义结构体(或共用体)位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。中成员所占存储空间的长度。含有位段的结构体类型称为位段结构。含有位段的结构体类型称为位段结构。2C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.1.2按位取反运算符按位取反运算符9.19.1位运算符与位运算位运算符与位运算位运算符主要有:位运算符主要有:、&、|、。(按位(按位“取反取反”)运算规则为:运算规则为:0=10=1,1=01=0例如,例如,77的值为的值为-8-8。在用位运算符进行数的运算时,数是以补码的形式参在用位运算符进行数的运算时,数是以补码的形式参加运算的。加运算的。9.1.1位运算符位运算符3C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.19.1位运算符与位运算位运算符与位运算(“左移左移”)运算功能:运算功能:将一个数的各个二进制位全部向将一个数的各个二进制位全部向左平移若干位,左边移出的部分予以忽略,左平移若干位,左边移出的部分予以忽略,右边空出的位置补零。右边空出的位置补零。例如,例如,323(“右移右移”)运算功能:运算功能:将一个数的各个二进制位全部向右平将一个数的各个二进制位全部向右平移若干位,右边移出的部分予以忽略,左边空出移若干位,右边移出的部分予以忽略,左边空出的位置对于无符号数补零,对于有符号数,若原的位置对于无符号数补零,对于有符号数,若原符号位为符号位为0,则补,则补0,若原符号位为,若原符号位为1,则全补,则全补1。也就是右移后保持这个数的正负符号不变。也就是右移后保持这个数的正负符号不变。例如,例如,-32-32,将,将3 3右移右移2 2位,左边(最高位)位,左边(最高位)补补1 1,结果为,结果为-1-1。9.1.4右移运算符右移运算符5C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算&(按位(按位“与与”)运算规则:运算规则:0&0=00&0=0,0&1=00&1=0,1&0=01&0=0,1&1=11&1=1例例如如,-5&3-5&3的的值值为为3 3。其其中中-5-5的的补补码码(为为简简便便起起见见,用用8 8位位二二进进制制表表示示)为为1111 1111 10111011,3 3的的补补码码为为0000 0000 00110011,按按位位与与的的结结果果为为0000 0000 00110011,即值为十进制数,即值为十进制数3 3。9.19.1位运算符与位运算位运算符与位运算9.1.5按位与运算符按位与运算符6C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.1.6按位或运算符按位或运算符9.19.1位运算符与位运算位运算符与位运算9.1.7按位异或运算符按位异或运算符|(按位(按位“或或”)运算规则:运算规则:0|0=00|0=0,0|1=10|1=1,1|0=11|0=1,1|1=11|1=1例如,例如,-5|3-5|3的值为的值为-5-5。-5-5与与3 3相位或后得相位或后得1111101111111011,其真值为,其真值为-0000101-0000101,即,即-5-5。(按位(按位“异或异或”)运算规则为:运算规则为:00=000=0,01=101=1,10=110=1,11=011=0例如,例如,-53-53的值为的值为-8-8。7C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.29.2位段位段9.2.1位段结构体说明位段结构体说明位段结构也是一种结构体类型,只不过其中含有以位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。段结构既节省存储空间,又可方便操作。位段结构中位段的位段结构中位段的定义格式定义格式为:为:unsigned:例:例:struct bytedataunsigned a:2;/*位段位段a,占,占2位位*/unsigned:6;/*无名位段,占无名位段,占6位,但不能访问位,但不能访问*/unsigned:0;/*无名位段,占无名位段,占0位,表下一位段从下一字边界开始位,表下一位段从下一字边界开始*/unsigned b:10;/*位段位段b,占,占10位位*/int i;/*成员成员i,从下一字边界开始,从下一字边界开始*/data;8C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.29.2位段位段9.2.2位段的引用位段的引用位段数据的引用,同结构体成员中的数据引用一样,但应注意位位段数据的引用,同结构体成员中的数据引用一样,但应注意位段的最大取值范围不要超出二进制位数确定的范围,否则超出部分段的最大取值范围不要超出二进制位数确定的范围,否则超出部分会丢弃。会丢弃。关于位段数据,注意以下几点:关于位段数据,注意以下几点:(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。存放该位段。(2)可以通过定义长度为)可以通过定义长度为0的位段的方式使下一位段从下一存储单的位段的方式使下一位段从下一存储单元开始。元开始。(3)可以定义无名位段。)可以定义无名位段。(4)位段的长度不能大于存储单元的长度。)位段的长度不能大于存储单元的长度。(5)位段无地址,不能对位段进行取地址运算。)位段无地址,不能对位段进行取地址运算。(6)位段可以以)位段可以以%d,%o,%x格式输出。格式输出。(7)位段若出现在表达式中,将被系统自动转换成整数。)位段若出现在表达式中,将被系统自动转换成整数。例如:例如:data.adata.a=2;=2;但但 data.adata.a=10;=10;就超出范围(就超出范围(a a占占2 2位,最大位,最大3 3)9C语言教学语言教学幻灯片版幻灯片版第九章位运算第九章位运算9.39.3程序设计举例程序设计举例例例编程将一个编程将一个1616进制整数(占进制整数(占2 2字节)的各位循环左移字节)的各位循环左移4 4个二进制位,如个二进制位,如2fe12fe1循环左移循环左移4 4个二进制位后为个二进制位后为fe12fe12。分析:分析:可先取出可先取出1616进制整数的最高进制整数的最高4 4个二进制位,然后将个二进制位,然后将该整数左移该整数左移4 4个二进制位,最后将先前取出的最高个二进制位,最后将先前取出的最高4 4个个二进制位放入低二进制位放入低4 4个二进制位位置。具体步骤为:个二进制位位置。具体步骤为:(1 1)取出)取出1616进制整数进制整数x x的最高的最高4 4个二进制位至个二进制位至y y:y=x(16-4)&0 xfy=x(16-4)&0 xf。(2 2)将该整数将该整数x x(占占2 2字节)左移字节)左移4 4个二进制位:个二进制位:x=(x4)&0 xffffx=(x(16-4)&0 xf;x=(x4)&0 xffff;/*16位的位的C语言程序不需要语言程序不需要“按位与按位与”0 xffff*/x=x|y;printf(“循环左移循环左移4个二进制位得:个二进制位得:%x”,x);程序运行结果如下:程序运行结果如下:请输入请输入16进制整数:进制整数:2fe1循环左移循环左移4个二进制位得:个二进制位得:fe129.39.3程序设计举例程序设计举例11

    注意事项

    本文(第9章 C语言的位运算.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开