k0b0's record.

Computer Engineering, Arts and Books

ビット操作(排他的論理和(xor))でswap処理(変数値の交換)を書いてみる。

排他的論理和でswap処理を書いてみる

xorを用いたswap処理について知ったのでメモしておく。
(なかなかテクニカルな方法で驚いた。)

xorを用いたswap処理の記述例

/* swap.c */
include<stdio.h>

int
main()
{
    int x = 128;
    int y = 256;

    printf("x = %d, y = %d \n", x, y);

    printf("Swap x y !\n");
    x = x ^ y;
    y = y ^ x;
    x = x ^ y;

    printf("x = %d, y = %d \n", x, y);

    return 0;
}

実行結果

x = 128, y = 256 
Swap x y !
x = 256, y = 128