int x=1,y=2,z=3; x=x^z; y=y^z; z=x^y; cout
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 07:34:25
xOPB
mI}M`Yۧ6W'nl%ČTgza-˽sm\OF S`!W!bBd,'F=/SSՕPA\ggmΑcq'm{߃Ik~;j.އ+y{LGF785!ҼSWD7dt uރ(w\I
bX:}wVt3I;!k{=~Wqfg# 4:^.nɔut
!CPbgch46éYobu.B`d ,Y+c3=k:νٍΌ.
?0LOq?'FaΕ<;VSں,$KzES%Z+$jFJQfIS
>i˂*M++b*'*t+iS
#"9T,\F,2FfԳ*3!K6f)q|cFx+(
ͤ3NUl&
int x=1,y=2,z=3; x=x^z; y=y^z; z=x^y; cout
int x=1,y=2,z=3; x=x^z; y=y^z; z=x^y; cout
int x=1,y=2,z=3; x=x^z; y=y^z; z=x^y; cout
因为^是异或运算符,所以要按位异或,将1,2,3分别转换成二进制数是:00000001,00000010,00000011.
x=x^z,即00000001^00000011,对应位置上数字不同则为一,相同则为零,因为x与z只有右数第二位不同,所以只有那一位为1,所以结果是00000010.而且此时结果赋值给x,使得x的值变为2.
y=y^z即00000010^00000011,可见二者最后一位一个是0一个是1,所以结果是00000001,再将值赋给y,则y值为1.
z=x^y即00000010^00000001,最后两位都不同,所以结果为00000011,并且将之赋给z,则z值为3.
最后cout,连续输出xyz,所以是213