位运算
按位取反 ~ 0变1 1变1
按位与 & 全1为1 —0为0
按位或 | 全0为0 —1为1
按位异或 ^ 相同为0 不同为1
代码示例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//1.按位取反~
void test01()
{
int num = 2;
printf("~num=%d\n",~num);//-很大 -2 253 1-很小 +很大 -3
//010 按位取反 101 原码
//101 补码 110+1
}
//2.按位与
void test02()
{
int num = 124;
if ((num&1)==0)
{
printf("num为偶数\n");
}
else
{
printf("num为奇数\n");
}
}
///3.按位或 |
void test03()
{
int num1 = 5;
int num2 = 3;
printf("num | num2=%d\n",num1 | num2);//
}
//按位异或
void test04()
{
int num1 = 10;
int num2 = 20;
printf("num1=%d\n",num1);
printf("num2=%d\n", num2);
//int temp=num1
//num1=num2;
//num2=temp;
//利用按位异或实现两个数的交换
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
//不用临时数字实现两个变量交换
num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;
printf("交换后\n");
printf("num1=%d\n",num1);
printf("num2=%d\n",num2);
}
int main()
{
//test01();
//test02();
//test03();
test04();
return EXIT_SUCCESS;
}
更多文章,敬请关注微信公众号:YQ编程