77问答网
所有问题
为什么两个二进制数经过三次按位异或运算就可以不借助第三个数将两个数互相交换?
如题所述
举报该问题
推荐答案 2019-08-08
异或运算法则是"同0异1",
举个例子:A=1101,B=0101,
第一次A与B异或结果为C=1000,
第二次A与C异或结果为0101,正好是B,
第三次B与C异或结果为1101,正好是A,
可见A与B借助于C实现了交换,本质上C还是充当了“第三者”的角色。
与常用的“C=A,A=B,B=C”交换方式相比,反而不够简洁,多出了位异或运算的开销。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/3Y88YvIq3pNW3NpvGY.html
相似回答
如何不使用
第三个
变量来
交换两个数
的值?
答:
因为对地址的操作实际上进行的是整数运算
,比如:两个地址相减得到一个整数,表示两个变量在内存中的储存位置隔了多少个字节;地址和一个整数相加即“a+10”表示以a为基地址的在a后10个a类数据单元的地址。所以理论上可以通过和算术算法类似的运算来完成地址的交换,从而达到交换变量的目的。位运算 int ...
异或运算
的规则是
什么?
答:
多个异或连续运算,就类似数学上的连加、连乘运算:将前
两个数
的运算结果,与
第三个数
继续运算;···其中的每一步都要按照相应运算的规则进行。异或的性质遵循结合律,即(a^b)^c=a^(b^c)。所以,可以A异或(A异或B)看作a^(a^b)=(a^a)^b,又因为a^a=0,原式可以简化成0^b=b。
二进制异或运算
怎么算
答:
1 异或 1 = 0 小结运算原则,就是相同得0,不同得1
。如果晕逻辑运算,就按真表示为1,,假表示为0,按上述原则进行运算;如果是两个整数,或者两个字符,进行按位异或运算,这先把两个整数或者字符都转换为二进制形式,然后按低位对齐,,再按上述原则进行竖式运算。作用 在计算机中普遍运用,异或...
位运算
加法
答:
到这里基本上就得出结论了,其实后面的那个 “00” 已经不用再去计算了,因为第一个表达式就已经算出了结果。通过推理可以得出三位数的加法只需重复的计算三次得到第一个表达式的值就是计算出来的结果。结论1:设a,b为
两个二进制数
,则a+b = a^b + (a&b)<<1。证明:a^b是不考虑进位时...
c语言
位运算
符的用法
答:
一、
位运算
符C语言提供了六种位运算符: & 按位与 | 按位或 ^
按位异或
~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的
两个二进
位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&5可写...
C语言里的
按位异或运算
符
答:
^
按位异或
若参加运算的
两个二进制
位值相同则为0,否则为1 ~ 取反 ~是一元运算符,用来对一
个二进制数
按位取反,即将0变1,将1变0 << 左移 用来将一个数的各二进制位全部左移N位,右补0 >> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0 ...
C语言
位运算
答:
|是位或运算,
2个数运算
只要有一个是1就得到1,如
二进制数
1010和1001得到进过1011^
异或运算
,相同为0不同为1 如二进制数 1010和1001 得到0011 fddpx | 发布于2012-02-07 举报| 评论(7) 123 6 a&b 相同位的
两个数字
都为1,则为1;若有一个不为1,则为0。 a|b 相同位只要一个为1即为1。 a ...
大家正在搜
将三位二进制的最大数转换为十进制
为什么三位二进制数有8种可能
每三位二进制数得到一位八进制数的
三位二进制数对应几位八进制数
十进制数三二转换成二进制整数是
三个二进制数异或运算
三位二进制数对应一位八进制
三进制数转换为二进制
八进制数转换为三进制数
相关问题
2019学习什么编程语言好
学习计算机编程语言的先后顺序?
编程语言很难学,那么新手该选什么语言
学习什么编程语言比较好?
编程语言学什么好
学习编程语言最重要的是什么?
新手如何学习编程语言?
如何正确的学习编程语言?