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

    C语言程序设计第12章(位运算).ppt

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

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

    C语言程序设计第12章(位运算).ppt

    第十二章第十二章 位运算位运算 位运算是指进行二进制位的运算位运算是指进行二进制位的运算位运算是指进行二进制位的运算位运算是指进行二进制位的运算,即对字节或字节即对字节或字节即对字节或字节即对字节或字节内部的内部的内部的内部的二进制位二进制位二进制位二进制位进行运算。进行运算。进行运算。进行运算。计算机中是以计算机中是以计算机中是以计算机中是以补码形式补码形式补码形式补码形式存放数的存放数的存放数的存放数的.正数正数正数正数:原码原码原码原码,反码反码反码反码,补码相同补码相同补码相同补码相同.负数的补码负数的补码负数的补码负数的补码:符号位不变,数值位按位取反加符号位不变,数值位按位取反加符号位不变,数值位按位取反加符号位不变,数值位按位取反加1 1 如如如如:+7+7:-7:-7:0000011111111001一一.位运算符位运算符参加位运算参加位运算数据类型数据类型:有符号和无符号的整型数有符号和无符号的整型数(包括包括:char、short int、long unsigned)位运算符共位运算符共 6 种:种:&|1.1.(按位取反运算符按位取反运算符按位取反运算符按位取反运算符)作用作用:对一个二进制数对一个二进制数逐位逐位取反。取反。注意注意注意注意:运算和运算和!运算的区别。运算的区别。的优先级与的优先级与+、-、!同级。结合性同级。结合性从右至左从右至左。如如:a=15则则 a例例例例12.1 main()12.1 main()int a=0,b=1;int a=0,b=1;printf(“%d,%d n”,printf(“%d,%d n”,aa ,bb););printf(“%d,%d n”,printf(“%d,%d n”,!a!a ,!b!b););运行结果运行结果运行结果运行结果:-1,-2-1,-2 1,0 1,000000000 000011111111111111110000a a000000000000000011111111111111110002.&(按位与运算按位与运算)作用作用:对参加运算的两个二进制数对参加运算的两个二进制数逐位进行逻辑与逐位进行逻辑与运算。运算。如如:a&b 规则规则:0&0=0,1&0=0,0&1=0,1&1=1 例如例如:a=1,b=-2,则则:a&b=0例例:main()int a=5,b=12,d;d=a&b;printf(“%d&%d=%dn”,a,b,d);输出输出:5&12=4 此例说明此例说明:a,b 两个操作数参加两个操作数参加&运算前后运算前后,其值不变。其值不变。000000010000000011111110111111110000000000000000aba&b3.|(按位或运算按位或运算)作用作用:对参加运算的两个二进制数逐位进行逻辑或对参加运算的两个二进制数逐位进行逻辑或 运算。运算。如如:a|b 规则规则:0|0=0,1|0=1,0|1=1,1|1=1 例如例如:a=1,b=-1,则则:a|b=-1.000000010000000011111111111111111111111111111111aba|b4.(按位异或运算按位异或运算)作用作用:对参加运算的两个二进制数对参加运算的两个二进制数逐位逐位进行进行逻辑逻辑 异异 或或运算运算.如如:ab 规则规则:00=0,10=1,01=1,11=0例如例如:a=15,b=0,则则:ab=15000011110000000000000000000000000000111100000000abab例例:main()int a=3,b=4;a=ab;b=ba;a=ab;printf(“%d,%d”,a,b);输出输出:4,3结论结论:利用异或运算,可以设置第三个变量就可以利用异或运算,可以设置第三个变量就可以 实现实现 两个整型变量值的交换。两个整型变量值的交换。000000110000000000000100000000000000011100000000aba0000001100000000b0000010000000000a5.(左移位运算左移位运算)作用作用:将操作数的各个二进位顺序将操作数的各个二进位顺序左左移移。右端空右端空出的位出的位补补 0,而移出左端之外的位则舍去而移出左端之外的位则舍去。如如:a n表示将表示将a 的各个二进位顺序左移的各个二进位顺序左移 n 位位(n 为正整数为正整数)。例如例如:a=25 则则 a3 结果为结果为 200 00011001000000001100100000000000aa3说明说明:(1)左移运算相当于乘左移运算相当于乘 2 运算。运算。对对无符号数无符号数,左移,左移 1 位,相当于乘位,相当于乘 2。左移。左移 n 位,则乘位,则乘 2n。(2)对于用补码表示的正数,如果左移出的全部是对于用补码表示的正数,如果左移出的全部是 0,且移出后的最高位仍是,且移出后的最高位仍是0。(3)对于用补码表示的负数,如果左移出的全部是对于用补码表示的负数,如果左移出的全部是 1,且移出后的最高位仍是,且移出后的最高位仍是 1。如。如:11111110111111111111000011111111-2-2 30000111100000000按位取反取负号转换为按位取反取负号转换为10进制再减进制再减1 得得-16按位取反取负号再加按位取反取负号再加1 转换为转换为10进制得进制得-16(4)若非上述情况若非上述情况(如:左移出现溢出时如:左移出现溢出时),就不能,就不能简单地用简单地用 乘乘 2 来计算来计算.如如:有符号字符型数有符号字符型数 64,当它左移当它左移 2 位时,结果为位时,结果为 0。01000000640000000064 (右移运算符右移运算符)作用作用:将操作数的各个二进位顺序将操作数的各个二进位顺序右右移移。左端左端空出空出的位的位补补0 或或补补 1,而移出而移出右端右端之外的位则之外的位则舍去舍去.如如:a n 表示将表示将 a 的各个二进位顺序右移的各个二进位顺序右移 n 位位 说明说明:右移运算的结果与操作数的符号有关右移运算的结果与操作数的符号有关 1)对无符号数进行右移对无符号数进行右移,左端空出的位一律补左端空出的位一律补 0。2)对用补码表示的有符号数对用补码表示的有符号数,则随系统而定。则随系统而定。“逻辑右移逻辑右移”空位空位一律一律补补 0;“算术右移算术右移”正数右移,空位补正数右移,空位补 0;负数右移,负数右移,空位补空位补1 。(Turbo C中采用算术右移中采用算术右移)例如例如:a=-32768000000001000000000000000010000000000000011000000aa 1a 1逻辑右移逻辑右移,结果为结果为 16384算术右移算术右移,结果为结果为-16384 算术右移运算相当于除算术右移运算相当于除 2 运算运算。右移。右移 1 位,相当位,相当于除于除 2。右移。右移 n 位位,则除,则除 2n。二二.1.位运算符的优先级位运算符的优先级结合性结合性:运算按从右至左运算按从右至左,其余按从左至右其余按从左至右 例例:x&077 x&(077)x 2&y 2)&(y 3)2.复合赋值运算复合赋值运算&=,|=,=,=如如:a&=b a=a&b a=m+1 a=am+1&|高高低低(7 4+1)即即 a 4(2)设置一个低设置一个低 4位全为位全为 1,其余位全为其余位全为 0 的数的数.(0 4&(0 4;c=(0(mn+1)c=(0n)d=b&c 111100001111111100000000 00001111 例例12.3 将一个整数将一个整数a循环右移循环右移 n 位位。所谓循环右所谓循环右移是将移是将 a 最右端的位最右端的位顺序顺序移到移到a的最左端,而将的最左端,而将 a中原左端的各位顺序右移到最右端。中原左端的各位顺序右移到最右端。1 0 0 0 1 0 0 1右移右移 2 位位 0 1 1 0 0 0 1 0(1)将将 a 左移左移 16 n 位并存入变量位并存入变量 b 中中,这样这样 b 中最左中最左端的端的n位就是原位就是原 a 最右端的最右端的 n 位位。而。而 b 中最右端中最右端(16 n)位全为位全为 0。b=an(3)将将 c 与与 b 按位或运算按位或运算 c=c|b 0|0=0,1|0=111011111101010110110000000000000ab0001101111110101c0111101111110101cmain()unsigned a,b,c;int n;scanf(“%o,%d”,&a,&n);b=an;c=c|b;printf(“%on%on”,a,c);如输入如输入:157653,3 输出为输出为:157653 75765 同样可以实现循环左移同样可以实现循环左移.11011111101010110111101111110101

    注意事项

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

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




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

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

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

    收起
    展开