电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言程序设计_位运算VIP免费

C语言程序设计_位运算_第1页
1/11
C语言程序设计_位运算_第2页
2/11
C语言程序设计_位运算_第3页
3/11
1C语言允许对内存中的字节或字节内的二进制位进行运算,即位运算.12.1位运算符和位运算位运算符共6种:&|^~<<>>说明:1.位运算符中除了~是单目运算符外,其余均为二目运算符,即要求运算符两侧各有一个运算对象.2.运算对象只允许是整型或字符型数据.包括:char,short,int,long,unsigned.第十二章位运算2312.1.1“按位相与”运算符(&)作用:对参加运算的两个二进制数按位进行逻辑与运算.规则:0&0=0,1&0=0,0&1=0,1&1=1例如:a=1,b=2,则:a&b=0000000010000000011111110111111110000000000000000aba&b用途:“与”0可以屏蔽掉某些位,“与”1可以筛选出某些位。典型的用法有:1)清零。欲对一个字节清零,通常是“与”上0x00。2)取出一个数中的某些指定位。比如有一个整数a,欲取出它的低8位,应:000010010000110011111111000000000000100100000000a0x00ffc412.1.2“按位相或”运算符(|)作用:对参加运算的两个二进制数逐位进行逻辑或运算.规则:0|0=0,1|0=1,0|1=1,1|1=1例如:a=1,b=1,则:a|b=1.000000010000000011111111111111111111111111111111aba|b用途:“或”1可以屏蔽掉某些位,“或”0可以筛选出某些位。典型的用法主要是:置1。欲对某些位置1,只需在相应位上“或”1便可。5例如:a=15,b=0,则:a^b=15.000011110000000000000000000000000000111100000000aba^b例:main(){inta=3,b=4;a=a^b;b=b^a;a=a^b;printf(“%d,%d”,a,b);}输出:4,3000000110000000000000100000000000000011100000000aba0000001100000000b0000010000000000a12.1.3“按位异或”运算符(^)作用:对参加运算的两个二进制数按位进行逻辑异或运算.规则:0^0=0,1^0=1,0^1=1,1^1=0结论:利用异或运算,不必设置第三个变量就可以实现两个整型变量值的交换。6用途:某位“异或”1要变,某位“异或”0不变。1)使指定位翻转。比如:要使一个字节的低四位翻转,只需异或0x0f。00100011a00001111a0x0f001011002)清零。一个整型(含字符型)数据“异或”自身,便清零.00100011aa0000000000100011a712.1.4“按位取反”运算符(~)作用:对一个二进制数按位取反,是一个单目运算符.如:a=15则~a=6552000000000000011111111111111110000a~a注意:~和!运算符是两个完全不同的运算符。~的优先级与++,,!相同,且结合性都是从右至左。例如:main(){inta=0,b=1;printf(“%d,%d\n”,~a,~b);printf(“%d,%d\n”,!a,!b);}运行结果:1,21,0000000000000000011111111111111110~0912.1.5左移位运算(<<)作用:将操作数的各个二进位顺序左移,右端空出的位补0,而移出左端之外的位则丢失.如:a<>)作用:将操作数的各个二进位顺序右移.左端空出的位补0或补1,而移出右端的位则被舍去.如:a>>n表示将a的各个二进位顺序右移n位.说明:右移运算的结果与操作数的符号有关.就TurboC2.0而言:1)无符号数为“逻辑右移”,即左端空出位一律补0.2)有符号数为“算术右移”,即正数右移,空位补0,负数右移,空位补1.一句话,算术右移是指最高位移入符号位。其它系统对有符号数可能依然采用“逻辑右移”,这随系统而定.000000001000000000000000010000000000000011000000aa>>1a>>1逻辑右移,结果为16384算术右移,结果为16384算术右移运算相当于除2运算。右移1位,相当于除以2。右移n位,则除以2n。例如:a=327681212.1.7位运算符的优先级与结合性~<<>>&^|258910高低结合性:~运算是从右至左,其余均按从左至右。12.1.8由位运算构成的复合赋值运算符&=,|=,^=,<<=,>>=如:a&=b等价于a=a&ba<<=m+1等价于a=a<>2&y<<3等价于(x>>2)&(y<<3)12.1.9不同长度的数据进行位运算如果两个不同长度的数据进行位运算,系统会自动将两者按右端对齐。例如:long型a和int型b进行位运算时,b的高16位要按“符号扩展”。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言程序设计_位运算

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部