位运算:
//正数的补码:与原码相同。
//负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int bit_1,bit_2,bit_3;
bit_1 = 12; //00001100
bit_2 = 7; //00000111
bit_3 = -8; //11111000
printf("AND运算:%d\n",bit_1 & bit_2);
printf("OR运算:%d\n",bit_1 | bit_2);
printf("XOR运算:%d\n",bit_1 ^ bit_2);
printf("NO运算:%d\n", ~ bit_2);
printf("NO运算:%d\n", ~ bit_3);
system("pause");
return 0;
}
位操作:
#include <stdio.h>
#include <stdlib.h>
#define BIT2 (0x01<<2)
int main()
{
int a=3;
// a |= BIT2; //设置BIT2位
// a &= ~BIT2; //清除BIT2位
a &= (a-1); //清除最后一位
printf("SET:%d\n",a);
system("pause");
}
使用异或运算交换变量值:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,y;
printf("Input two dates:");
scanf("%d %d",&x,&y);
printf("x=%d,y=%d\n",x,y);
x=x^y;
y=x^y;
x=x^y;
printf("x=%d,y=%d\n",x,y);
system("pause");
}