C#の ^ 演算子

C#の"^"演算子について紹介します。

概要

C#の ^ 演算子はビット演算の場合 XOR をあらわします。

書式

値1と値2のXORを演算します。

(値1) ^ (値2)

プログラム例

UI

下図のUIを作成します。テキストボックスを3つ、ボタンを1つ設置します。
C#の ^ 演算子:画像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を求め、結果をテキストボックスに表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
C#の ^ 演算子:画像2

テキストボックスに"F"と"4"を入力し、ボタンをクリックします。結果の"B"がテキストボックスに表示されます。
C#の ^ 演算子:画像3

XORの動作

先のサンプルコードで動作が確認できましたが、結果にBが表示されるの動作の詳細を解説します。

2つのbool値(値1),(値2)が存在するとき、

(値1) XOR (値2)

の結果は以下となります。

値1値2結果
000
011
101
110

値1と値2が異なる場合"1"(true)となります。

入力が "0xF"と"0x4"の場合

入力の"F"を2進数表記すると"1111"となります。また、"4"のに進数表記は"0100"となります。それぞれの桁の数値を比較します。

値11111
値20100
結果1011

となり、結果は"0xB"となります。

入力が "0x7"と"0x8"の場合

値10111
値21000
結果1111

となり、結果は"0xF"となります。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2010-01-19
Copyright © 1995–2025 iPentec all rights reserverd.