C语言 按位两次异或是什么意思
题目如下:编写程序,输入两个无符号整数,求他们按位两次异或的值,并输出结果。按位两次异或是什么意思?求助大佬...
题目如下:编写程序,输入两个无符号整数,求他们按位两次异或的值,并输出结果。
按位两次异或是什么意思?求助大佬 展开
按位两次异或是什么意思?求助大佬 展开
4个回答
展开全部
比如输入的两位无符号整数定义为a, b
那么a和b的异或就是 a⊕b
两次异或就是(a⊕b)⊕(a⊕b)
所以不论a和b为何值,a⊕b=a⊕b
两次异或就是0
那么a和b的异或就是 a⊕b
两次异或就是(a⊕b)⊕(a⊕b)
所以不论a和b为何值,a⊕b=a⊕b
两次异或就是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按二进制的位做位运算,异或运算也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用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;
}
按位两次异或,意思含混不清,猜想是 输入 无符号整数 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);
unsigned b = 0;
unsigned c = a ^ b;
c ^= (a^b);
追问
按位两次异或是什么意思
追答
这样的题目表示模糊,不提倡
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询