いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

一時変数を使わないでふたつの変数の値を交換するためには XOR 演算を使います。

まず、普通にふたつの変数の値を交換するコードを書くと次のようになります。

int a = 123;
int b = 456;

int temp = a;
a = b;
b = temp;

std::cout <<a <<std::endl: // 456
std::cout <<b <<std::endl: // 123

これは誰でも頷けますよね。片方の変数の値を保持するために temp という一時的な変数を使っています。しかし、このコードは次のように書くこともできるのです。

int a = 123;
int b = 456;

a = a ^ b;
b = a ^ b;
a = a ^ b;

std::cout <<a <<std::endl;
std::cout <<b <<std::endl;

これは XOR 交換アルゴリズムと言ってプログラマの間では非常に有名な手法です(有名であって支持されているわけではありません)。原理は環論の話になってしまうの割愛させていただきます。

本当はこういう解説を難なくやってのけたいんですけどね。実力の限界です。

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS