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呢?这该怎么算? 展开
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呢?这该怎么算? 展开
展开全部
不知道你在问什么问题!整型数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才对。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
异或运算符∧也称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
应用:
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以上代码其实实现的是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也同样理解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询