与(&)运算的应用
与运算的性质:任何数&1都是它本身,&0是0。因此我们可以通过与运算来获取一个整数的某个部份的值,比如:
获取一个整数的后3位:
int x=100;
x&7即为x的后三位。因为7的二进制码为0111。所以,任何一个数与7进行与运算,那么其它位都会被置零。只有后三位得到保留。
我们也可以使用与运算与取反和移位运算相结合,将整数的某位置零。比如:
x&(~(1<<n))即可将x第n位置为零。
#define CLEARFLAG(a,n) ((a) &= ~(1<<(n)))//把整数a中第n位置为0
此外,我们还可以用来判断一个整数中某位是否为1(通常是某个标志信息),比如:
x&(1<<n);
上面的语句可以用来判断x中第n位是否为1。有时候一个整数通常用某1位或几位置1来表示一个信息,另几位表示另外的信息,这个时候用与运算就可以判断该位是否有该信息。
#define FLAGON(a,n) ((a)&(1<<(n)))//判断整数a中第n位是否为1