大家好,又见面了,我是你们的朋友全栈君。
^表示按位异或运算符,顾名思义,相异,即不同则为1,反之为0
例如15和16进行异或运算,运算过程如下:15 0000 0000 0000 0000 0000 0000 0000 1111
16 0000 0000 0000 0000 0000 0000 0001 0000
^ ——————————————
0000 0000 0000 0000 0000 0000 0001 1111
可以看到,经过按位异或运算后,其结果变成十进制应为31,大家务必弄清楚运算过程,然后再上机验证,代码如下:#include
int main()
{
int a;
a=15^16;
printf(“a=%d\n”,a);
return 0;
}
运算结果为:a=31
异或运算符的作用指定位数的翻转
如想对某个数字的低4位进行翻转,则可以将这个数字与15(二进制为00001111)进行按位异或运算,既可以将原数字的低四位进行翻转,即高四位不变,低四位0变1,1变0
与0异或还是原值
大家可以自行实验,一个数字与0进行异或,结果还是原值
交换两个数字
除了之前我们学习交换两个数字需要第三个变量做中介之外,如今可以通过异或运算进行,代码如下:#include
int swap(int *a,int *b)
{
if (*a!=*b)
{
*a=*a^*b;
*b=*b^*a;
*a=*a^*b;
}
return 0;
}
int main()
{
int a=5;
int b=5;
swap(&a,&b);
printf(“a=%d b=%d\n”,a,b);
return 0;
}
可以看到原先a为3,b为5,运行后得出:a=5 b=5
请大家阅读代码理解并上机试验
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134782.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...