《(13)--C语言课件第13章位运算.ppt》由会员分享,可在线阅读,更多相关《(13)--C语言课件第13章位运算.ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第13章章位运算位运算位运算功能是位运算功能是C语言的一大特色功能。语言的一大特色功能。所谓位运算是指所谓位运算是指针对针对数据中的数据中的二进制位二进制位进进行的运算。行的运算。只能对只能对整型、字符型整型、字符型数据进行位运算数据进行位运算。C语言中有语言中有6种基本位运算符。种基本位运算符。按位取反运算符按位取反运算符进行按位取反运算时,若运算位为进行按位取反运算时,若运算位为0,则结果位,则结果位为为1;若运算位为;若运算位为1时,则结果位为时,则结果位为0。例如:例如:shortinta=15,b=a;因为因为0000000000001111B=1111111111110000Bb
2、的结果为的结果为-16按位与运算符按位与运算符进行按位与运算时,只有相运算的两位均为进行按位与运算时,只有相运算的两位均为1时,时,结果位才为结果位才为1。例如:例如:shortinta=3,b=5,c=a&b;因为因为0000000000000011B&0000000000000101B-=0000000000000001Bc的结果为的结果为1按位或运算符按位或运算符进行按位或运算时,只有相运算的两位均为进行按位或运算时,只有相运算的两位均为0时,时,结果位才为结果位才为0。例如:例如:shortinta=3,b=5,c=a|b;因为因为0000000000000011B|000000000
3、0000101B-=0000000000000111Bc的结果为的结果为7按位异或运算符按位异或运算符进行按位异或运算时,若相运算的两位相异,则进行按位异或运算时,若相运算的两位相异,则结果位为结果位为1;若相运算的两位相同,则结果位;若相运算的两位相同,则结果位为为0。例如:例如:shortinta=15,b=10,c=ab;因为因为0000000000001111B0000000000001010B=0000000000000101Bc的结果为的结果为5。按位左移运算符按位左移运算符格式:变量格式:变量n其中其中n是左移的位数是左移的位数功能:用于将变量的内容左移功能:用于将变量的内容左移
4、n个二进制位。即个二进制位。即从左边去掉从左边去掉n位,从右边补上位,从右边补上n个个0。按位左移运算符按位左移运算符例如:例如:shortinta=15,b=a2;因为因为0000000000001111Bn其中其中n是右移的位数是右移的位数功能:用于将变量的内容右移功能:用于将变量的内容右移n个二进制位。即个二进制位。即从右边去掉从右边去掉n个二进制位,从左边补上个二进制位,从左边补上n个二进个二进制位。制位。例如:例如:shortinta=16,b=a2;因为因为0000000000010000B2=0000000000000100Bb的结果为的结果为4。对于无符号整数,左边对于无符号整
5、数,左边补补0;对于有符号整数,;对于有符号整数,左边左边补符号位补符号位。例如:例如:shortinta=-16,b=a2;因为因为1111111111110000B2=1111111111111100Bb的结果为的结果为-4。可见,可见,右移一位相当于被右移一位相当于被2整除(向下取整)整除(向下取整)。若两个运算量的位数不同,则按右对齐将若两个运算量的位数不同,则按右对齐将较短者较短者补齐。补齐。对于无符号整数,左边对于无符号整数,左边补补0 0;对于有符号整;对于有符号整数,左边数,左边补符号位补符号位。位运算举例位运算举例【例例】用位运算分离出一个无符号整数的第用位运算分离出一个无符号整数的第4至至第第7位。位。#includemain()unsignedshorta,b,c,d;scanf(%o,&a);b=a4;c=(04);d=b&c;printf(%o,%dn,a,a);printf(%o,%dn,d,d);【例例】用位运算将一个无符号整数循环右移若干位。用位运算将一个无符号整数循环右移若干位。程序如下:程序如下:#includemain()unsignedshorta,b,c;intn;scanf(%o%d,&a,&n);b=an;c=c|b;printf(%o,%dn,a,c);
限制150内