c语言按位异或

a=5;b=4;a=a^b;b=b^a;a=a^b;书中说,b=a^b^ba=a^b^b^a^b,我知道任何一个数与本身相异或,结果都是0,那么b=a^0,a与0相异或的... a=5;
b=4;
a=a^b;
b=b^a;
a=a^b;

书中说,b=a^b^b
a=a^b^b^a^b,
我知道任何一个数与本身相异或,结果都是0,那么b=a^0,a与0相异或的结果是多少?
a是不是等于0^b^0呢?这该怎么算?
展开
 我来答
peng131131
2012-03-03 · 超过26用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:70万
展开全部
按位异或需要将异或双方转换成二进制数,如当a=5时,二进制为101,与0异或后结果为100,也就是b=4的二进制了。
异或时的规则是:逐位进行比较,相同为0(即1与1异或为0,0与0异或为0),不同为1(即0与1异或为1,1与0异或为1)。
White_MouseYBZ
推荐于2017-06-18 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6653万
展开全部
不知道你在问什么问题!整型数a^0还是整型数a。^是左-->右结合的,0^b^0就是(0^b)^0,所以结果还是b。b=a^b^b和a=a^b^b^a^b不知=是赋值还是==,要是赋值,前者的结果是b的值为a,后者的结果是a的值是b;要是等式,即是==,那显然是错误的,应该是a=a^b^b和b=a^b^b^a^b才对。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
味蕾摄影游侠
2019-06-12 · TA获得超过3518个赞
知道大有可为答主
回答量:3023
采纳率:29%
帮助的人:171万
展开全部
异或运算符∧也称XOR运算符,它的作用是判断参加运算的两个二进制位是否为同号,若同号则结果为0;异号则为1。即0异或0=0,1异或0=1,1异或1=0。
应用:
1、使特定位翻转。假设有01111010,想使其低4位翻转。可以将它与0000111进行异或运算,结果为01110101。
2、与0异或,保留原值。如012异或00=012.
3、交换两个值,不用临时变量。假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a异或b;
b=b异或a;
a=a异或b;
C语言位运算符:与、或、异或、取反、左移和右移
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。
&
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
|
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
~
取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<<
左移
用来将一个数的各二进制位全部左移N位,右补0
>>
右移
将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6c9b9d4
2012-09-21
知道答主
回答量:31
采纳率:0%
帮助的人:18.1万
展开全部
以上代码其实实现的是a和b不借助第三个变量来交换之间的值;b=a^b^b不等于b=a^0;因计算是从左往右的顺序,如果A=a^b,那么b=a^b^b等于b=A^b; a=a^b^b^a^b也同样理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式