ビット単位の演算子はビット レベルで実行される演算にほかならず、C# では演算子 AND、OR、NOT などを使用してさまざまなビット単位の演算が可能です。ビット単位の演算に一般的に使用される演算子は、true を返す AND (&) です。両方のオペランドが true の場合、オペランドが true の場合にのみ true を返す OR (|)、入力に応じて同等の結果を返す排他的 OR (XOR または ^)、左シフト (<<) を移動するために使用します。ビットを左へ、右シフト (>>) はビットを右に移動するために使用され、補数 (~) は単一のオペランドで使用され、入力に基づいて補数ビット値を返します。
次に、C# で定義されているさまざまな種類のビット演算子を示します。
次の記事では、ビット単位の演算子がどのように機能するかを説明しています。以下に示すのは、C# のビット単位の演算子の例です。
AND 演算を使用している場合、両方の値が True の場合にのみ True が返されます。この演算子は、「&」演算子を使用して実装できます。
例:
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { byte myvarA = 10;// This binary is equivalent for 10 is 01010 byte myvarB = 20;// This binary is equivalent for 20 is 10100 long myresult = myvarA & myvarB; // The result of AND operation result is: 00000 Console.WriteLine("{0} AND {1} result is :{2}",myvarA,myvarB,myresult); myvarA = 10;// This binary is equivalent for 10 is 01010 myvarB = 10;// This binary is equivalent for 10 is 01010 myresult = myvarA & myvarB; // The result of AND operation result is: 01010 Console.WriteLine("{0} AND {1} result is : {2}",myvarA,myvarB,myresult); } }
出力:
テキスト エディターを開き、拡張子 .cs を付けたファイルを任意の名前で保存します。適切な C# コンパイラを使用してプログラムを実行すると、以下の出力が得られます:
OR メソッドを使用する場合、両方の値が FALSE の場合にのみ FALSE が提供されます。それ以外の場合は、OR 演算が真となります。この演算子は、「|」演算子を使用して実装できます。
例:
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { byte myvarA = 10;// This binary is equivalent for 10 is 01010 byte myvarB = 20;// This binary is equivalent for 20 is 10100 long myresult = myvarA | myvarB; // The result of OR operation result is: 11110 Console.WriteLine("{0} OR {1} result is :{2}",myvarA,myvarB,myresult); myvarA = 10;// This binary is equivalent for 10 is 01010 myvarB = 10;// This binary is equivalent for 10 is 01010 myresult = myvarA | myvarB; // The result of OR operation result is: 01010 Console.WriteLine("{0} OR {1} result is : {2}",myvarA,myvarB,myresult); } }
出力:
上記のコードをコンパイルして実行すると、次の出力が得られます:
関連するビットが一意の場合は 1 が与えられ、それ以外の場合は 0 が与えられます。この演算子は「^」演算子を使用して実装できます。
例:
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { int num1 = 14, num2 = 11, myresult; myresult = num1^num2; Console.WriteLine("{0} ^ {1} = {2}", num1, num2, myresult); } }
出力:
上記のコードをコンパイルして実行すると、次の出力が得られます:
RightShift 演算がバイナリ値で実行される場合、ビットは右側の 1 つの位置にシフトされます。この演算子は、「>>」演算子を使用して実装できます。
例:
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { byte myvarA = 10;// This binary is equivalent for 10 is 01010 long myresult = myvarA >> 1; // The right shift operation result is : 0101 Console.WriteLine("{0} is right shifted to 1 position result is:{1}",myvarA,myresult); } }
出力:
上記のコードをコンパイルして実行すると、次の出力が得られます:
LeftShift 演算がバイナリ値で実行される場合、ビットは左側の 1 つの位置にシフトされます。この演算子は、「<<」演算子を使用して実装できます。
例:
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { byte myvarA = 10;// This binary is equivalent for 10 is 01010 long myresult = myvarA << 1; // The left shift operation result is : 10100 Console.WriteLine("{0} is left shifted to 1 position result is:{1}",myvarA,myresult); } }
出力:
上記のコードをコンパイルして実行すると、次の出力が得られます:
ビット単位の補数演算子は、1 つのオペランドのみを操作する単項演算子である「~」によって指定されます。 ~ 演算子はビットを反転します。つまり、1 から 0、および 0 から 1 に切り替わります。
例:
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { int num = 22, num_result; num_result = ~num; Console.WriteLine("~{0} = {1}", num, num_result); } }
出力:
上記のコードをコンパイルして実行すると、次の出力が得られます:
この記事では、C# でビット演算子をどのように使用できるか、およびその機能について説明しました。これらの演算子は、オペランド (2 進数とも呼ばれます) に対してビットごとの演算を実行するために使用されます。ビットごとの演算子は、2 つの入力の関数のバイナリ解釈をセルごとに分析します。これらの演算子は主に、重要な情報がデータに接続されたヘッダー内の個々のビットによってシンボル化される通信スタックで使用されます。
以上がC# のビット演算子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。