procedure TForm1.Button1Click(Sender: TObject);
var
a,b:integer;
begin
a:=strtoint(self.Edit1.text);
b:=strtoint(self.Edit2.Text);
a:=a xor b;
b:=b xor a;
a:=a xor b;
self.Edit1.Text:=inttostr(a);
self.Edit2.Text:=inttostr(b);
end;
前两个赋值语句:“a = a ^ b;”和“b = b ^ a;”相当于b = b ^ (a ^ b),而b ^ a ^ b等于a ^ b ^ b。b ^ b的结果为0,因为同一个数与相向相^,结果必为0。因此b的值等于a ^ 0,即a,其值为2。
再执行第三个赋值语句:“a = a ^ b”。由于a的值等于(a ^ b),b的值等于(b ^ a ^ b),因此,相当于a = a ^ b ^ b ^ a ^ b,即a的值等于a ^ a ^ b ^ b ^ b,等于b。