C# のビット演算子

WBOY
WBOYオリジナル
2024-09-03 15:08:43813ブラウズ

ビット単位の演算子はビット レベルで実行される演算にほかならず、C# では演算子 AND、OR、NOT などを使用してさまざまなビット単位の演算が可能です。ビット単位の演算に一般的に使用される演算子は、true を返す AND (&) です。両方のオペランドが true の場合、オペランドが true の場合にのみ true を返す OR (|)、入力に応じて同等の結果を返す排他的 OR (XOR または ^)、左シフト (<<) を移動するために使用します。ビットを左へ、右シフト (>>) はビットを右に移動するために使用され、補数 (~) は単一のオペランドで使用され、入力に基づいて補数ビット値を返します。

C# のビット演算子の種類

次に、C# で定義されているさまざまな種類のビット演算子を示します。

  • ビットごとの AND (&):最初のオペランドの各ビットは、2 番目のオペランドのビットと関連付けられます。両方のビットが 1 の場合、結果のビットは 0 ではなくても 1 になります。
  • ビットごとの OR(|):最初のオペランドの各ビットは、その 2 番目のオペランドのビットに関連付けられます。いずれかのビットが 1 の場合、結果のビットは 0 ではなくても 1 になります。
  • ビットごとの排他的 OR (XOR – ^): 最初のオペランドのすべてのビットは、2 番目のオペランドの後続のビットと比較できます。一方のビットが 0 で、もう一方のビットが 1 の場合、結果ビットは 1 になります。そうでない場合、結果ビットは 0 になります。
  • ビット単位左シフト (<<):定義されたビット数に応じて、数値を左に移動します。最小ビットにはゼロが追加されます。
  • ビット右シフト (>>):定義されたビット数に応じて、数値を右に移動します。最小ビットにはゼロが追加されます。
  • ビット単位の補数 (~):ビット単位の補数演算子は、1 つのオペランドのみを操作する単項演算子です。 ~ 演算子は 1 から 0、および 0 から 1 に切り替わります。

C# のビット演算子の例

次の記事では、ビット単位の演算子がどのように機能するかを説明しています。以下に示すのは、C# のビット単位の演算子の例です。

1.ビット単位の AND

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# コンパイラを使用してプログラムを実行すると、以下の出力が得られます:

C# のビット演算子

2.ビット単位の OR

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);
}
}

出力:

上記のコードをコンパイルして実行すると、次の出力が得られます:

C# のビット演算子

3.ビットごとの EXOR

関連するビットが一意の場合は 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);
}
}

出力:

上記のコードをコンパイルして実行すると、次の出力が得られます:

C# のビット演算子

4.ビット単位の右シフト

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);
}
}

出力:

上記のコードをコンパイルして実行すると、次の出力が得られます:

C# のビット演算子

5.ビット単位の左シフト

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);
}
}

出力:

上記のコードをコンパイルして実行すると、次の出力が得られます:

C# のビット演算子

6.ビット単位の補数

ビット単位の補数演算子は、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# のビット演算子

結論

この記事では、C# でビット演算子をどのように使用できるか、およびその機能について説明しました。これらの演算子は、オペランド (2 進数とも呼ばれます) に対してビットごとの演算を実行するために使用されます。ビットごとの演算子は、2 つの入力の関数のバイナリ解釈をセルごとに分析します。これらの演算子は主に、重要な情報がデータに接続されたヘッダー内の個々のビットによってシンボル化される通信スタックで使用されます。

以上がC# のビット演算子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:C# の条件演算子次の記事:C# の条件演算子