#99 Article 249 Posted at 1992/04/25 12:41:58 by おちゃ (MAP1512) [MIX]

Subject: Re:*6 参考用 ML1W.EXE ver.0.10 (PC98|286|386) /246 ... /4878(#32) /243

要するにテンポラリメモリを使わずしてビット列をスワップさせれば良いのだな。

【同じ長さのビット列Aと、ビット列Bのスワップ(A swap B)】

1)	A := A xor B;
2)	B := A xor B;
3)	A := A xor B;

このように、3回各ビットごと、順にXORを行うことにより、可能です。

【証明】
1)~3)による操作の結果(A'とB'とする)は、テンポラリビット列 A1,A2,B1 を使って
以下のように書ける。

1')	A1 := A xor B;
2')	B1 := A1 xor B;
3')	A2 := A1 xor B1;
4')	A' := A2;
5')	B' := B1;

以上の実行結果において、
	B' = B1 = A1 xor B = A xor B xor B
	   = A
	A' = A2 = A1 xor B1 = A xor B xor A1 xor B = A xor A1 = A xor A xor B
	   = B
(証明終わり)

これでビット列の互換が可能だから、すべての並び換えが可能である。(群論による)

		こんなもんでどないでっしゃろ?			おちゃ