位运算符有6种运算符:按位与&,按位或|,按位异或^,取反~,左移<<和右移>>
按位与&:两个数的二进制位都为1时,得到的数的二进制位对应的位为1,否则为0
例如:
void main()
{
int a,b,c;
a=26; //00000000 00000000 00000000 00011010
b=6; //00000000 00000000 00000000 00000110
//按位与
c=a&b; //00000000 00000000 00000000 00000010
printf("%d\n",c);
}结果是:
2按位或|:两个数的二进制位只要有一个为1,得到的数的二进制位对应的位就为1例如:
<pre name="code" class="java">void main()
{
int a,b,c;
a=26; //00000000 00000000 00000000 00011010
b=6; //00000000 00000000 00000000 00000110
//按位或
c=a|b; //00000000 00000000 00000000 00011110
printf("%d\n",c);
}
结果是:30按位异或^:两个数的二进制位不相同的时候,得到的数的二进制位对应的位就为1,否则为0例如:
void main()
{
int a,b,c;
a=26; //00000000 00000000 00000000 00011010
b=6; //00000000 00000000 00000000 00000110
//按位异或
c=a^b; //00000000 00000000 00000000 00011100
printf("%d\n",c);
}
结果是:
28例如:
void main()
{
unsigned a,b;
a=6; //00000000 00000000 00000000 00000110
//取反
b=~a; //11111111 11111111 11111111 11111001
printf("%o\n",b);
}
结果是:-7左移<<:把数的二进制位的低位向左移动,把高位的数移到低位,由"<<"右边的数来决定移动的位数例如:
void main()
{
unsigned a,b;
a=6; //00000000 00000000 00000000 00000110
//向左移动2位
b=a<<2; //00000000 00000000 00000000 00011000
printf("%d\n",b);
system("pause");
}结果是:24右移>>:把数的二进制位的低位向右移动,把多出的位移到高位,由">>"右边的数来决定移动的位数例如:
void main()
{
unsigned a,b;
a=6; //00000000 00000000 00000000 00000110
//向右移动2位
b=a>>2; //00000000 00000000 00000000 00000001
printf("%d\n",b);
}结果是:1
495

被折叠的 条评论
为什么被折叠?



