用位運算將a和b的值互換

例如:a=3,即11(2);b=4,即100(2)。
想將a和b的值互換,可以用以下賦值語句實現:
    a=a∧b;
    b=b∧a;
    a=a∧b;
a=011(2)
    (∧)b=100(2)
a=111(2)(a∧b的結果,a已變成7)
    (∧)b=100(2)

b=011(2)(b∧a的結果,b已變成3)
    (∧)a=111(2)


a=100(2)(a∧b的結果,a已變成4)
等效於以下兩步:
    ① 執行前兩個賦值語句:“a=a∧b;”和“b=b∧a;”相當於b=b∧(a∧b)。
    ② 再執行第三個賦值語句: a=a∧b。由於a的值等於(a∧b),b的值等於(b∧a∧b),

因此,相當於a=a∧b∧b∧a∧b,即a的值等於a∧a∧b∧b∧b,等於b。
很神奇吧!


#include <stdio.h>
 void main()
 {
  int a=3;
  int b = 4;
  a=a^b;
  b=b^a;
  a=a^b;
  printf("a=%d b=%d",a,b);
 }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章