0
点赞
收藏
分享

微信扫一扫

C语言的位逻辑非运算

在觉 2022-10-19 阅读 174

关于位逻辑非运算符(^):是将数值转换成二进制,相同位相同的值为0,相同位不相同的值为1;如:

a=3二进制为011、

b=6二进制位110;

所以

c=a^b=3^6=5二进制为101;

a=b^c=6^5=3二进制为011;

b=a^c=3^5=6二进制为110;

举一个例子,把变量a的值与变量b的值互换;代码如下;

#include<stdio.h>
void ABB()
{
int a = 3;
int b = 6;
int c = a;
a = b;
b = c;
printf("a=%d\nb=%d\n", a, b);
}
int main()
{
ABB();
return 0;
}

得出的结果如下

C语言的位逻辑非运算_运算符

而通过位逻辑非运算符,直接进行a与b的互换。

#include<stdio.h>
void ABB()
{
int a = 3;
int b = 6;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d\nb=%d\n", a, b);
}
int main()
{
ABB();
return 0;
}

结果如下:

C语言的位逻辑非运算_运算符_02

这样做的好处是省去了中间变量。



举报

相关推荐

0 条评论