访问计数 8891 (自2016年5月)
11841?1489719724
发帖时间:04/05/2016 15:50
更新时间:05/11/2016 23:20
<p> 变量A、B的值互换,有同学提到还有这种方法:A^=B^=A^=B; </p> <p> 这样确实能够实现,原因如下: </p> <p> <span style="line-height:16.7999992370605px;">A^=B^=A^=B;等价于如下语句:</span> </p> <p> { </p> <p> <span style="line-height:16.7999992370605px;">&nbsp;&nbsp;&nbsp;&nbsp;A=<span style="line-height:16.7999992370605px;">A</span><span style="line-height:16.7999992370605px;">^</span>B;</span> </p> <p> <span style="line-height:16.7999992370605px;">&nbsp; &nbsp; B=B^A;</span> </p> <p> <span style="line-height:16.7999992370605px;">&nbsp; &nbsp; A=A^B;</span> </p> <p> } </p> <p> 用A和B的原始值替换上述等式右边的值,上面的语句可以合并为两条独立的语句(并列,用于计算A、B的值,但不能顺序执行): </p> <p> B=B^(<span style="line-height:16.7999992370605px;">A</span><span style="line-height:16.7999992370605px;">^</span><span style="line-height:16.7999992370605px;"></span><span style="line-height:16.7999992370605px;">B</span>) ;和 A=(<span style="line-height:16.7999992370605px;">A</span><span style="line-height:16.7999992370605px;">^</span><span style="line-height:16.7999992370605px;"></span><span style="line-height:16.7999992370605px;">B</span>)^(<span style="line-height:16.7999992370605px;">B^</span><span style="line-height:16.7999992370605px;">(<span style="line-height:16.7999992370605px;">A</span><span style="line-height:16.7999992370605px;">^</span><span style="line-height:16.7999992370605px;"></span><span style="line-height:16.7999992370605px;">B</span>)</span>); </p> <p> 再考虑异或计算的运算法则(见http://baike.baidu.com/view/674171.htm),可以得到上面两个并列的语句就相当B=A;和A=B; </p>
回复 ︿ (3)
  • 用户头像
    刘翔宇 3年前
    <blockquote>YoungS 写到: <br/><span class="atwho-inserted"><span class="at" data-user-id="11328"><a href="/users/11328">@刘翔宇(liuxiangyu)</a></span></span>‍&nbsp;</blockquote><span>谢谢教员</span><img src="http://www.trustie.net/assets/kindeditor/plugins/emoticons/images/13.gif" border="0" alt="" /><span>,明白是怎样个原理了。</span>

  • 用户头像
    杨绍武 3年前
    这个方法的问题是只适合于整型数的交换,不具有一般性。

  • 用户头像
    杨绍武 3年前
    <span class="atwho-inserted"><span class="at" data-user-id="11328"><a href="/users/11328">@刘翔宇(liuxiangyu)</a></span></span>‍&nbsp;

0?1470885445
登录后可添加回复