先日、コンピューターの歴史を語る機会があった。
その中で思い出した話として、排他的論理和の思い出がある。

排他的論理和とは、論理和が排他的になったものである。

と言っても意味不明だが、要するに
論理和「Aがある状態、または、Bがある状態」と言うもが、
排他的つまり「ただし、AとBがある状態は同時に成立してはならない」という条件が付いた物である。

論理演算の基本の一つで、論理演算だと、
0^0=0
1^0=1
0^1=1
1^1=0
という4つの基本的な式が成り立つ演算だ。(^記号は排他的論理和を芦原素記号)

その昔、コンピューターが遅かった時代、
「変数xに0を代入」といった処理をする時間が勿体なくて、
直値代入演算よりも高速に動作する、排他的論理演算を利用して
「変数xと変数xを排他的論理和した結果を変数xに入れる」
といったコードを書いていた時代もある(だいたい70~80年代)。
※前者は mov eax,0、後者は xor eax,eax とIA32アセンブラでは書く。

時は下って、西暦2000年頃、MMXという高速化技術が登場したが、せっかくの高速化技術を使うのに、
低速な命令を使うのは勿体ないと言うことで、
やっぱり、ここでもXOR演算は大活躍だった。
※0だけじゃなく、-1や、2のn乗、2のn乗-1といった数字も演算で高速に作り出すという手法も数々あった。

まぁ、現代みたいにCPUの速度が格段に速くなった状態では、
今は昔の話だけれど。