资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
位运算应用口诀 清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 运算符,右边的位被挤掉,对于左边移出的空位一概补上0。位运算符的应用 (源操作数s 掩码mask)(1) 按位与- & 1 清零特定位 (mask中特定位置0,其它位为1,s=s&mask) 2 取某数中指定位 (mask中特定位置1,其它位为0,s=s&mask)(2) 按位或- | 常用来将源操作数某些位置1,其它位不变。 (mask中特定位置1,其它位为0 s=s|mask)(3) 位异或- 1 使特定位的值取反 (mask中特定位置1,其它位为0 s=smask) 2 不引入第三变量,交换两个变量的值 (设 a=a1,b=b1) 目标 操作 操作后状态a=a1b1 a=ab a=a1b1,b=b1b=a1b1b1 b=ab a=a1b1,b=a1a=b1a1a1 a=ab a=b1,b=a1二进制补码运算公式:-x = x + 1 = (x-1)x = -x-1 -(x) = x+1(-x) = x-1x+y = x - y - 1 = (x|y)+(x&y) x-y = x + y + 1 = (x|y)-(x&y) xy = (x|y)-(x&y)x|y = (x&y)+yx&y = (x|y)-xx=y: (x-y|y-x)x!=y: x-y|y-xx y: (x-y)(xy)&(x-y)x)x=y: (x|y)&(xy)|(y-x)x y: (x&y)|(x|y)&(x-y)/无符号x,y比较xk&1(3) 将int型变量a的第k位清0,即a=a&(1k)(4) 将int型变量a的第k位置1, 即a=a|(1k)(5) int型变量循环左移k次,即a=a16-k (设sizeof(int)=16)(6) int型变量a循环右移k次,即a=ak|a1);(8)判断一个整数是不是2的幂,对于一个数 x = 0,判断他是不是2的幂boolean power2(int x) return (x&(x-1)=0)&(x!=0);(9)不用temp交换两个整数void swap(int x , int y) x = y; y = x; x = y;(10)计算绝对值int abs( int x )int y ;y = x 31 ;return (xy)-y ; /or: (x+y)y(11)取模运算转化成位运算 (在不产生溢出的情况下) a % (2n) 等价于 a & (2n - 1)(12)乘法运算转化成位运算 (在不产生溢出的情况下) a * (2n) 等价于 a n 例: 12/8 = 123(14) a % 2 等价于 a & 1(15) if (x = a) x= b; Else if(x = b) x= a; 等价于 x= a b x;(16) x 的 相反数 表示为 (x+1)#include /设置x的第y位为1#define setbit(x,y) (x)|=(1(pos-1)&1) /打印x的值#define print(x) printf(%dn,x)/将整数(4个字节)循环右移动k位#define Rot(a,k) (a)(32-k)/判断a是否为2的幂次数#define POW2(a) (a)&(a-1)=0)&(a!=0)#define OPPX(x) (x)+1)/返回X,Y 的平均值int average(int x, int y) return (x&y)+(xy)1);/判断a是否为2的幂次数bool power2(int x)return (x&(x-1)=0)&(x!=0);/x与y互换void swap(int& x , int& y) x = y; y = x; x = y;int main()int a=0x000D;print(a);int b=BitGet(a,2);print(b);setbit(a,2);print(a);print(BitGet(a,2);int c=Rot(a,33);print(c);print(BitGet(c,5);printf(8+5=%dn,average(8,692);int i;for (i=0;i1000;i+)if (POW2(i)/调用power2(i) printf(%-5d,i); printf(n);int x=10,y=90;swap(x,y);print(x);print(y);print(OPPX(-705);return 0;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号