C#の"^"演算子について紹介します。
C#の ^
演算子はビット演算の場合 XOR をあらわします。
値1と値2のXORを演算します。
下図のUIを作成します。テキストボックスを3つ、ボタンを1つ設置します。
以下のコードを記述します。ButtonのClickイベントハンドラを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OperatorDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text, 16);
int b = Convert.ToInt32(textBox2.Text, 16);
int c = a ^ b;
textBox3.Text = Convert.ToString(c, 16);
}
}
}
int a = Convert.ToInt32(textBox1.Text, 16);
int b = Convert.ToInt32(textBox2.Text, 16);
にて、テキストボックスに入力された文字列を16進数表記の文字列として数値に変換します。
int c = a ^ b;
textBox3.Text = Convert.ToString(c, 16);
入力された文字列のXORを求め、結果をテキストボックスに表示します。プロジェクトを実行します。下図のウィンドウが表示されます。
テキストボックスに"F"と"4"を入力し、ボタンをクリックします。結果の"B"がテキストボックスに表示されます。
先のサンプルコードで動作が確認できましたが、結果にBが表示されるの動作の詳細を解説します。
2つのbool値(値1),(値2)が存在するとき、
の結果は以下となります。
値1 | 値2 | 結果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
値1と値2が異なる場合"1"(true)となります。
入力の"F"を2進数表記すると"1111"となります。また、"4"のに進数表記は"0100"となります。それぞれの桁の数値を比較します。
値1 | 1111 |
---|---|
値2 | 0100 |
結果 | 1011 |
となり、結果は"0xB"となります。
値1 | 0111 |
---|---|
値2 | 1000 |
結果 | 1111 |
となり、結果は"0xF"となります。