第13章 位运算ppt课件.ppt

上传人:春哥&#****71; 文档编号:16977486 上传时间:2022-05-20 格式:PPT 页数:26 大小:710KB
返回 下载 相关 举报
第13章 位运算ppt课件.ppt_第1页
第1页 / 共26页
第13章 位运算ppt课件.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《第13章 位运算ppt课件.ppt》由会员分享,可在线阅读,更多相关《第13章 位运算ppt课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第13章 位运算第十三章 位运算 本章要点 位运算的概念二进制位运算;应用程序举例;2022-5-20 32022-5-20 4位运算的概念l前面我们所学的各种运算,都是以字节作为基本单位进行的。所谓位运算,就是以二进制位为基本单位进行的运算l语言提供了6种基本位运算符,如下所示:l此外,位运算符也可以与赋值运算符一起组成复合赋值符。如:&=、|=、=、=、=运算符含义运算符含义与 取反 |或 右移2022-5-20 5位运算的概念l优先级:l按位取反() 优先级 2l位移()优先级 5l位与(&)优先级 8l位异或()优先级 9l位或(|)优先级 10l结合性:l按位取反()右结合性l其他左

2、结合性l说明:l位运算符中除按位非()为单目运算符外,其他均为双目运算符。l位运算的运算量只能是整型或字符型的数据,不能为实型数据。1.如果参加位运算的运算量是负数,则首先要将其以补码形式表示为二进制数,然后再按相应规则进行运算。2022-5-20 6二进制位运算:按位非(求反) l功能:l对参与运算的数的各二进位按位求反,即将0变1,将1变0。l例如:l025是对八进制数25(即二进制数00010101)按位求反,计算方法如下: 0000000000010101 1111111111101010 (八进制数177752)2022-5-20 7按位非(求反)运算 :l例程#includemai

3、n() int a=3,b=5,c; c=a&b; printf(c=%dn,c); 运算结果:c=42022-5-20 8l功能:l把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数l运算规则l低位补0 ,高位溢出丢弃。l例如:左移运算 :#includemain() int a=9; a=a1; printf(a=%dn,a); 运算结果:a=182022-5-20 9左移运算 :l说明l从上面的例子可以看出,在不损失有效数字的情况下,每左移1位,相当于该数乘以2,左移2位相当于该数乘以2的2次方(4),152,结果为60,即相当于15乘以4。但此结论只适用于该数左

4、移时被溢出舍弃的高位中不包含1的情况。l例如:l表达式al功能:l把“”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数l说明:l对于无符号数:右移时高位补零;l对于有符号数:正数右移时在高位补0,负数右移时在高位补1。其中左边补0称“算术右移”,左边补1称“逻辑右移”。l例如:l若a=017,二进制形式为00001111(十进制为15);a2运算后,舍弃低2位得到00000011 (十进制为3)l若a=-5,二进制形式为11111011;a2运算后,舍弃低2位得到11111110 (十进制为-2)2022-5-20 11右移运算 :l例程main() unsigned a,b

5、; printf(input a number: ); scanf(%d,&a); b=a5; printf(a=%dtb=%dn,a,b); 运行结果:input a number: 255 a=255b=7由以上示例可以看出,右移一位相当于除以2,右移n位相当于除以2n。2022-5-20 12应用程序举例:1、输入一个数、输入一个数m,输出其所对应二进制数的从右端开始的第,输出其所对应二进制数的从右端开始的第6至至8位。位。分析:首先先使m右移5位,使要取出的那几位移到最右端,再设置一个数n低3位全为1,其余的位全为0的数,即将一个全1的数左移3位,这样右端低3位为0,最后将m&n,将m

6、的低3位取出。程序如下:#include stdio.hmain() int m,n,p,t;printf(“Please input m 的值:);scanf(%d,&m);n=m5;p=(03);t=n&p;printf(m=%d,t=%dn,m,t);程序运行:输入416在输出结果屏上显示:m=416,t=5说明:输入416,m的值为416,对应的二进制数为00000001 10100000,m左移5位后为00000000 00001101赋值给n,p的值二进制数为00000000 00000111,n&p的值对应二进制数为00000000 00000101赋值给变量t。2022-5-2

7、0 13按位与运算 :&l运算规则:l参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为,则该位的结果值为;否则为。即:,例: 00000011(3)& & 00000101(5) 00000001(1) 2022-5-20 14按位与运算 :&l按位与的常用功能1:清零l若想对一个存储单元置零,只要用一个全的二进制数与其进行运算,即可达到清零目的。例:若原存储单元的数为00101011,若要将其全部置为0,只需将其与二进制数00000000进行运算即可。 00101011& & 00000000 00000000 2022-5-20 15按位与运算 :&l按位与的常用功

8、能2: 取一个数中的特定位:l若想对一个二进制数的某些位置零,其他位保持不变,只需将找一个数(对应于要置0的位全部为0,对应于要保持不变的位全部为1),然后做按位与运算即可。 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0abc0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0例:有16位的二进制数,要求将高8位全部置0,低8位保持不变,只需将其与二进制数0000000011111111进行运算即可。2022-5-20 16应用程序举例:2、有以下程序(2019年9月)#include main() in

9、t a=2,b=2,c=2;printf(%dn,a/b&c); 程序运行后的输出结果是A)0B)1C)2D)32022-5-20 17按位异或运算 :l运算规则:l当两对应的二进位相异时,结果为1,反之为0。即:00=0,01=1,10=1, 11=0例: 071052=023 (八进制数) 00111001 00101010 00010011 2022-5-20 18按位异或运算 :l运算符的应用l运算可以使特定位翻转。l设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行运算,即: 01111010 00001111 01110101 运算结果:低

10、位正好是原数低位的翻转。可见,要使哪几位翻转就将与其进行运算的该几位置为即可。2022-5-20 19小练习:1、变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是(2019年8月) A)ab B)a|b C)a&bD)a4 2022-5-20 20按位或运算 :|l运算规则:l只要对应的二个二进位有一个为1时,结果位就为1。即|,|,|,|l例如: 对于060|017,计算方法如下: 00110000| | 00001111 00111111 2022-5-20 21按位或运算 :|l按

11、位或的用途:l按位或运算常用来对一个数据的某些位定值为。l例如:如果想使一个数的低位改为,只需将与(1111)进行按位或运算即可。例:是一个短整形数据 (16位),有表达式:a|0377 则将低位全置为,高位原样保留。说明:其中0377是8进制数,其二进制是111111112022-5-20 22按位或运算 :|l例程#include main() int a=9,b=5,c; c=a|b; printf(a=%dnb=%dnc=%dn,a,b,c); 运算结果:a=9b=5c=132022-5-20 23小练习:4、有以下程序#include main() int a=5,b=1,t;t=(

12、a=, =, =例如: a&=b /相当于 a=a&b a=2 /相当于 a=a22022-5-20 25不同长度数据的位运算l注意:l如果两个数据长度不同(例如a为int型,而b为short型),进行位运算时,系统会将二者按右端对齐。如果如果b为无符号整型或正数,则左侧16位补满0;若b为负数,则左侧16位补满1;例:int a=5;shot b=3; 则a&b; 00000000000000000000000000000101 (a)& & 00000000000000000000000000000011 (b) 00000000000000000000000000000001 (1) 2022-5-20 26

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

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