2005-11-27-01-【RPNToGo】第11回:ビットレベルの排他的論理和演算子 - project-enigma

2005-11-27-01-【RPNToGo】第11回:ビットレベルの排他的論理和演算子

>> Site top >> weblog >> 月別アーカイブ >> 2005年11月のlog >> 2005-11-27-01-【RPNToGo】第11回:ビットレベルの排他的論理和演算子

最終更新日付:2013/12/31 07:40:15


RPNToGo】第11回:ビットレベルの排他的論理和演算子

2005 年 11 月 27 日

しばらくご無沙汰しておりました RPNToGo のテクニック紹介、11回目の今回は「排他的論理和演算子」について解説をします。礼によって例のごとく、前回と極力似せた記述でお送りしますのでよろしく。

先日のビット演算子をひと巡りするエントリで説明したとおり、排他的論理和は2項演算子で、2つの値の対応するビットが互いに異なれば計算結果の対応するビットが 1 に、それ以外であればそのビットは 0 になります。以前は以下のような例を示しました。

  10 : 1010
  12 : 1100
^───────
      0110

このことからわかるのは、「排他的論理和は2つの値より大きくなることも小さくなることもある」ということです。排他的論理和の計算結果が最大となるのは、2つの値の各ビットが互いに異なる時で、結果は2つの値の和になります。たとえば以下のように。

  10 : 1010
   5 : 0101
^────────
      1111 ・・・ 15

逆に、計算結果が最小となるのは、2つの値が互いに等しい時で、結果は0になります。たとえば以下のように。

  10 : 1010
  10 : 1010
^────────
      0000 ・・・ 0

このように、ビットレベルの排他的論理和演算子は、2つの値のビット構成によってその結果を変化させます。この演算子についても面白いテクニックを紹介したいところなのですが、陰郎自身もこのカードはもてあまし気味で、なかなかいい例を思いつきません...が、なんとかひねり出したものを以下に紹介します。

定義上、対応する全てのビットが一致しない場合、排他的論理和と論理和の結果は一致します。これは、論理和演算子のときに取り上げた補数演算子との併用と同じことができることを意味します。つまり、ある値とその補数の排他的論理和もまた確実に -1 になるのです。同じように 10 とその補数である -11 で考えましょう。便宜上、ここでは 8 ビットで表現します。

  10 : 00001010
 -11 : 11110101
^──────────
     11111111 ・・・ -1

では次。排他的論理和は同一の2つ値で計算をすると0になりますが、その0と別の値で計算を再度行えばその値が残ります。ということは、面白いことに全て同一の値で排他的論理和の計算を繰り返した場合、「奇数回ならば0、偶数回ならばその値」 ということになります。ためしに以下の3つの計算をやって見てください。

 5  5  ^
 5  5  5  ^  ^
 5  5  5  5  ^  ^  ^

...いかがでしょうか。中途半端な感じですが、排他的論理和演算子については以上になります。これはしかし、使い方が一番難しいカードではないでしょうか。ほとんど「邪魔者」カード同然なのですが、こういうのを計算に上手く組み込むことができると結構快感ですよ。では、次回は「ビットシフト演算子」です。それではまた。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : Palm

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.