C语言 按位两次异或是什么意思

题目如下:编写程序,输入两个无符号整数,求他们按位两次异或的值,并输出结果。按位两次异或是什么意思?求助大佬... 题目如下:编写程序,输入两个无符号整数,求他们按位两次异或的值,并输出结果。
按位两次异或是什么意思?求助大佬
展开
 我来答
小菜鸟2无聊写代码
2019-10-05 · TA获得超过1058个赞
知道小有建树答主
回答量:932
采纳率:87%
帮助的人:161万
展开全部

按位两次异或是“a^=b;b^=a;”这样吗,如果是的话,那么

对无符号整数而言等价于如下语句:

temp=a; a^=b; b=temp; 

相当于a与b异或了一次,值存在a,而旧的a值又赋给了b

如果是“a^=b;b^=a;a^=b;”

其实就是交换两个变量的值

等价于

temp=a;a=b;b=temp;

意义在于,少用一个变量,节省空间

//PS: 按位计算对于计算机语言而言大同小异,我偷了个懒用了javascript来写

锐雯windy
2019-10-05 · 超过19用户采纳过TA的回答
知道答主
回答量:62
采纳率:37%
帮助的人:14.4万
展开全部
比如输入的两位无符号整数定义为a, b
那么a和b的异或就是 a⊕b
两次异或就是(a⊕b)⊕(a⊕b)
所以不论a和b为何值,a⊕b=a⊕b
两次异或就是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2019-10-05 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5527万
展开全部
按二进制的位做位运算,异或运算也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1)。
按位两次异或,意思含混不清,猜想是 输入 无符号整数 a,b, 计算 c = a ^ b, 然后把结果再与 b 做异或,即 d = c^b, 输出 d. (有点像二维码里的计算,b是过滤器)。[不会是自己同自己求异或,自己与自己异或永远得0。]


#include <stdio.h>
int main(){
unsigned int a,b,c;
printf("input a b:");
scanf("%d %d",&a,&b);
printf("I read %d %d or %#x %#x\n",(unsigned)a,(unsigned)b,a,b);
c = a^b;
c = c^b;
printf("result: %d or %#x\n",(unsigned)c,c);
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-10-05
展开全部
unsigned a = 1;
unsigned b = 0;
unsigned c = a ^ b;
c ^= (a^b);
追问
按位两次异或是什么意思
追答
这样的题目表示模糊,不提倡
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式