全国计算机等级考试2c课程第12讲位运算

上传人:san****019 文档编号:71150693 上传时间:2019-01-19 格式:PPT 页数:24 大小:392.31KB
返回 下载 相关 举报
全国计算机等级考试2c课程第12讲位运算_第1页
第1页 / 共24页
全国计算机等级考试2c课程第12讲位运算_第2页
第2页 / 共24页
全国计算机等级考试2c课程第12讲位运算_第3页
第3页 / 共24页
全国计算机等级考试2c课程第12讲位运算_第4页
第4页 / 共24页
全国计算机等级考试2c课程第12讲位运算_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《全国计算机等级考试2c课程第12讲位运算》由会员分享,可在线阅读,更多相关《全国计算机等级考试2c课程第12讲位运算(24页珍藏版)》请在金锄头文库上搜索。

1、全国计算机等级考试 3C课程,第十二讲 位运算,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,2,位运算的概念,前面我们所学的各种运算,都是以字节作为基本单位进行的。所谓位运算,就是以二进制位为基本单位进行的运算 语言提供了6种基本位运算符,如下所示: 此外,位运算符也可以与赋值运算符一起组成复合赋值符。如: &=、|=、=、=、=,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,3,位运算的概念,优先级: 按位取反() 优先级 2 位移() 优先级 5 位与(&) 优先级 8 位异或() 优先级 9 位或(|) 优先级 10 结合性: 按位取反() 右结合性 其他 左结合性 说

2、明: 位运算符中除按位非()为单目运算符外,其他均为双目运算符。 位运算的运算量只能是整型或字符型的数据,不能为实型数据。 如果参加位运算的运算量是负数,则首先要将其以补码形式表示为二进制数,然后再按相应规则进行运算。,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,4,按位非(求反)运算 :,功能: 对参与运算的数的各二进位按位求反,即将0变1,将1变0。 例如: 025是对八进制数25(即二进制数00010101)按位求反,计算方法如下:,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,5,按位非(求反)运算 :,例程,#include main() int a=3,b=5,c

3、; c=a ,运算结果:c=4,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,6,功能: 把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数 运算规则 低位补0 ,高位溢出丢弃。 例如:,左移运算 :,#include main() int a=9; a=a1; printf(“a=%dn“,a); ,运算结果:a=18,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,7,左移运算 :,说明 从上面的例子可以看出,在不损失有效数字的情况下,每左移1位,相当于该数乘以2,左移2位相当于该数乘以2的2次方(4),152,结果为60,即相当于15乘以4。但此结论

4、只适用于该数左移时被溢出舍弃的高位中不包含1的情况。 例如: 表达式a4 ,是指把变量a的各二进位向左移动4位。 如果有语句:a=3(3的二进制00000011),则左移4位相当于3*24,结果为:00110000(即十进制48)。,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,8,右移运算 :,功能: 把“”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数 说明: 对于无符号数:右移时高位补零; 对于有符号数:正数右移时在高位补0,负数右移时在高位补1。其中左边补0称“算术右移”,左边补1称“逻辑右移”。 例如: 若a=017,二进制形式为00001111(十进制为1

5、5);a2运算后,舍弃低2位得到00000011 (十进制为3) 若a=-5,二进制形式为11111011;a2运算后,舍弃低2位得到11111110 (十进制为-2),2019/1/19,作者:张旭仟 版权所有 欢迎盗版,9,右移运算 :,例程,main() unsigned a,b; printf(“input a number: “); scanf(“%d“, ,运行结果: input a number: 255 a=255 b=7 由以上示例可以看出,右移一位相当于除以2,右移n位相当于除以2n。,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,10,小练习:,1、若有以下程序(

6、2009年9月) int r=8; printf(“%dn“,r1); 输出结果是 A)16 B)8 C)4 D)2,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,11,按位与运算 :&,运算规则: 参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为,则该位的结果值为;否则为。即: ,,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,12,按位与运算 :&,按位与的常用功能1:清零 若想对一个存储单元置零,只要用一个全的二进制数与其进行运算,即可达到清零目的。,例:若原存储单元的数为00101011,若要将其全部置为0,只需将其与二进制数00000000进行

7、运算即可。,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,13,按位与运算 :&,按位与的常用功能2: 取一个数中的特定位: 若想对一个二进制数的某些位置零,其他位保持不变,只需将找一个数(对应于要置0的位全部为0,对应于要保持不变的位全部为1),然后做按位与运算即可。,例:有16位的二进制数0010110010101100,要求将高8位全部置0,低8位保持不变,只需将其与二进制数0000000011111111进行运算即可。,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,14,小练习:,2、有以下程序(2010年3月) #include main() int a=2,b=2,

8、c=2; printf(“%dn“,a/b 程序运行后的输出结果是 A)0 B)1 C)2 D)3,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,15,按位异或运算 :,运算规则: 当两对应的二进位相异时,结果为1,反之为0。即: 00=0,01=1,10=1, 11=0,例: 071052=023 (八进制数),2019/1/19,作者:张旭仟 版权所有 欢迎盗版,16,按位异或运算 :,运算符的应用 运算可以使特定位翻转。 设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行运算,即:,运算结果:低位正好是原数低位的翻转。 可见,要使哪几位翻

9、转就将与其进行运算的该几位置为即可。,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,17,小练习:,3、变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是(2008年4月) A)ab B)a|b C)a&b D)a4,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,18,按位或运算 :|,运算规则: 只要对应的二个二进位有一个为1时,结果位就为1。即 |,|,|,| 例如: 对于060|017,计算方法如下:,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,19,按位或

10、运算 :|,按位或的用途: 按位或运算常用来对一个数据的某些位定值为。 例如:如果想使一个数的低位改为,只需将与(1111)进行按位或运算即可。,例:是一个短整形数据 (16位),有表达式:a|0377 则将低位全置为,高位原样保留。,说明:其中0377是8进制数,其二进制是11111111,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,20,按位或运算 :|,例程,#include main() int a=9,b=5,c; c=a|b; printf(“a=%dnb=%dnc=%dn“,a,b,c); ,运算结果: a=9 b=5 c=13,2019/1/19,作者:张旭仟 版权所

11、有 欢迎盗版,21,小练习:,4、有以下程序 #include main() int a=5,b=1,t; t=(a2|b); printf(“%dn”,t) 程序运行后的输出结果是 A)21 B)11 C)6 D)1,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,22,位运算赋值运算符,位运算符与赋值运算符可以组成复合赋值运算符。如: &=, |=, =, =, =,例如: a&=b /相当于 a=a&b a=2 /相当于 a=a2,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,23,不同长度数据的位运算,注意: 如果两个数据长度不同(例如a为int型,而b为short型),进行位运算时,系统会将二者按右端对齐。如果如果b为无符号整型或正数,则左侧16位补满0;若b为负数,则左侧16位补满1;,2019/1/19,作者:张旭仟 版权所有 欢迎盗版,24,Thank listen!,

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号