首页 第12讲 位运算

第12讲 位运算

举报
开通vip

第12讲 位运算全国计算机等级考试3C课程第11讲位运算作者:张旭仟版权所有欢迎盗版位运算的概念 前面我们所学的各种运算,都是以字节作为基本单位进行的。所谓位运算,就是以二进制位为基本单位进行的运算 C语言提供了6种位运算符: 位运算符也可以与赋值符一起组成复合赋值符。如:&=、|=、^=、>>=、<<= 说明: 位运算符中除~以外,均为双目运算符。 运算量只能是整型或字符型的数据,不能为实型数据。作者:张旭仟版权所有欢迎盗版按位与运算:& 运算规则: 参加运算的两个数据,按二进制位进行&l...

第12讲 位运算
全国计算机等级考试3C课程第11讲位运算作者:张旭仟版权所有欢迎盗版位运算的概念 前面我们所学的各种运算,都是以字节作为基本单位进行的。所谓位运算,就是以二进制位为基本单位进行的运算 C语言提供了6种位运算符: 位运算符也可以与赋值符一起组成复合赋值符。如:&=、|=、^=、>>=、<<= 说明: 位运算符中除~以外,均为双目运算符。 运算量只能是整型或字符型的数据,不能为实型数据。作者:张旭仟版权所有欢迎盗版按位与运算:& 运算规则: 参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1注意:参加位运算的运算量必须都是整形或字符型数据;如果参加&运算的是负数,则首先要以补码形式表示为二进制数,然后再按相应规则进行运算。作者:张旭仟版权所有欢迎盗版按位与运算:& 按位与的常用功能-清零若想对一个存储单元置零,只要用一个全0的二进制数与其进行&运算,即可达到清零目的。例:若原存储单元的数为00101011,若要将其全部置为0,只需将其与二进制数00000000进行&运算即可。作者:张旭仟版权所有欢迎盗版按位与运算:& 按位与的常用功能-取一个数中的特定位:若只想对一个二进制数的某些位置零,其他位保持不变,只需将找一个数(对应于要置0的位全部为0,对应于要保持不变的位全部为1),然后做按位与运算即可。例:有16位的二进制数0010110010101100, 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 将高8位全部置0,低8位保持不变,只需将其与二进制数0000000011111111进行&运算即可。作者:张旭仟版权所有欢迎盗版按位与运算:& 例如,要把变量a的高八位清 0 ,保留低八位。只需作如下运算:a&255(0000000011111111)#include<stdio.h>main(){ inta; scanf("%d",&a); printf("Befor:%d\n",a); a=a&255; printf("After:%d\n",a);}运算结果:65535Befor: 65535After: 255作者:张旭仟版权所有欢迎盗版按位或运算:| 运算规则: 只要对应的二个二进位有一个为1时,结果位就为1。即0|0=0,0|1=1,1|0=1,1|1=1作者:张旭仟版权所有欢迎盗版按位或运算:| 按位或的用途: 按位或运算常用来对一个数据的某些位定值为1。 例如:如果想使一个数a的低4位改为1,只需将a与017(1111)进行按位或运算即可。例:a是一个短整形数据(16位),有表达式:a|0377则将低8位全置为1,高8位原样保留。说明:其中0377是8进制数,其二进制是11111111作者:张旭仟版权所有欢迎盗版按位或运算:| 例程#include<stdio.h>main(){ inta=9,b=5,c; c=a|b; printf("a=%d\nb=%d\nc=%d\n",a,b,c);}运算结果:a=9b=5c=13作者:张旭仟版权所有欢迎盗版按位异或运算:^ 运算规则: 当两对应的二进位相异时,结果为1,反之为0。即:0^0=0,0^1=1,1^0=1,1^1=0例:071^052=023(八进制数)作者:张旭仟版权所有欢迎盗版按位异或运算:^ ^运算符的应用 ^运算可以使特定位翻转。 设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行^运算,即:运算结果:低4位正好是原数低4位的翻转。可见,要使哪几位翻转就将与其进行∧运算的该几位置为1即可。作者:张旭仟版权所有欢迎盗版按位异或运算:^ 例程#include<stdio.h>main(){ inta=9; a=a^5; printf("a=%d\n",a);}运算结果:a=15作者:张旭仟版权所有欢迎盗版按位非(求反)运算:~ 功能: 对参与运算的数的各二进位按位求反,即将0变1,将1变0。 例如,~025是对八进制数25(即二进制数00010101)按位求反。注意:按位非是单目运算符,优先级2级,右结合性。作者:张旭仟版权所有欢迎盗版按位非(求反)运算:~ 例程#include<stdio.h>main(){ inta=3,b=5,c; c=~a&b; printf("c=%d\n",c);}运算结果:c=4作者:张旭仟版权所有欢迎盗版左移运算:<< 功能: 把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数 运算规则 低位补0,高位溢出丢弃。 例如:#include<stdio.h>main(){ inta=9; a=a<<1; printf("a=%d\n",a);}运算结果:a=18作者:张旭仟版权所有欢迎盗版左移运算:<< 说明 从上面的例子可以看出,在不损失有效数字的情况下,每左移1位,相当于该数乘以2,左移2位相当于该数乘以2的2次方(4),15<<2,结果为60,即相当于15乘以4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。 例如:表达式a<<4,是指把变量a的各二进位向左移动4位。如果有语句:a=3(3的二进制00000011),则左移4位后的结果为:00110000(即十进制48)。作者:张旭仟版权所有欢迎盗版右移运算:>> 功能: 把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数 说明: 对于无符号数,右移时高位补零;对于有符号数,正数右移时在高位补0,负数右移时在高位补1。其中左边补若干0称“算术右移”,左边补若干1称“逻辑右移”。 例如: 若a=017,二进制形式为00001111(十进制为15);a>>2运算后,舍弃低2位得到00000011(十进制为3) 若a=-5,二进制形式为11111011;a>>2运算后,舍弃低2位得到11111110(十进制为-2)作者:张旭仟版权所有欢迎盗版右移运算:>> 例程main(){unsigned a,b; printf("input a number: "); scanf("%d",&a); b=a>>5;printf("a=%d\tb=%d\n",a,b);}运行结果: inputanumber:255 a=255 b=7由以上示例可以看出,右移一位相当于除以2,右移n位相当于除以2n。作者:张旭仟版权所有欢迎盗版位运算赋值运算符 位运算符与赋值运算符可以组成复合赋值运算符。如:&=,|=,>>=,<<=,∧=例如:a&=b//相当于a=a&ba<<=2//相当于a=a<<2作者:张旭仟版权所有欢迎盗版不同长度数据的位运算 注意: 如果两个数据长度不同(例如a为int型,而b为short型),进行位运算时,系统会将二者按右端对齐。如果如果b为无符号整型或正数,则左侧16位补满0;若b为负数,则左侧16位补满1;作者:张旭仟版权所有欢迎盗版  Thanklisten!作者:张旭仟版权所有欢迎盗版
本文档为【第12讲 位运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:ppt
大小:198KB
软件:PowerPoint
页数:0
分类:建造师考试
上传时间:2020-03-21
浏览量:0