原标题:C语言提供了六种位运算符(1)
所谓位运算,就是对一个比特(Bit)位进行操作。
运算符&|^~<<>>说明按位与按位或按位异或取反左移右移
按位与运算
一个比特(Bit)位只有0和1两个取值,只有参与&运算的两个位都为1时,结果才为1,否则为0。例如1&1为1,0&0为0,1&0为0。
数值在内存中以二进制的形式存在,9&5可写算式如下:
00001001 (9的二进制)
&00000101 (5的二进制)
00000001 (1的二进制)
所以9&5=1。
严格来说,数值在内存中以补码形式存在,整数的补码与它的二进制形式相同,负数则不一样,不了解的读者可自行脑补。
按位与运算符&会对参与运算的两个数的所有二进制位进行&运算。
按位与运算通常用来对某些位清0或保留某些位。例如把c的高16位清0 ,保留低16位,可作a&65535运算(65536占用4个字节,二进制数为00000000000000001111111111111111)。
【示例】位运算举例。
#include
int main(){
unsigned a=9; //二进制数 00001001
unsigned b=5; //二进制数 00000101
unsigned c=0XDE09A32B; //十进制数 3725173547
unsigned d=0X0000FFFF; //十进制数 65535
printf("a=%u, b=%u, a&b=%u\n", a, b, a&b);
printf("c=%u, d=%u, c&d(%%d)=%u, c&d(%%X)=%X\n", c, d, c&d, c&d);
return 0;
}
运行结果:
a=9, b=5, a&b=1
c=3725173547, d=65535, c&d(%d)=41771, c&d(%X)=A32B返回搜狐,查看更多
责任编辑: