C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#ビット単位およびビットシフト演算子


ビット演算子はビットを処理し、ビットごとの演算を実行します。

C#でサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持すると仮定します-

演算子
説明


ビットごとのAND演算子は、両方のオペランドにビットが存在する場合、結果にビットをコピーします。
(A&B)=12、つまり0000 1100
|
ビットごとのOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。
(A | B)=61、つまり0011 1101
^
ビットごとのXOR演算子は、ビットが両方ではなく一方のオペランドに設定されている場合、そのビットをコピーします。
(A ^ B)=49、つまり0011 0001

ビット単位の補数演算子は単項であり、ビットを「反転」させる効果があります。
(〜A)=61、これは2の補数で1100 0011です。これは、符号付きの2進数によるものです。
<<
ビット単位の左シフト演算子
左のオペランドの値は、右のオペランドで指定されたビット数だけ左に移動します。
A <<2 =240、つまり1111 0000
>>
ビット単位の右シフト演算子
左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。
A>> 2 =15、つまり0000 1111

以下は、C#でビット演算子を実装する方法を示す例です。

using System;
namespace MyApplication {
   class Program {
      static void Main(string[] args) {
         int a = 60; /* 60 = 0011 1100 */
         int b = 13; /* 13 = 0000 1101 */
         int c = 0;
         // Bitwise AND Operator
         c = a &amp; b; /* 12 = 0000 1100 */
         Console.WriteLine("Line 1 - Value of c is {0}", c );
         // Bitwise OR Operator
         c = a | b; /* 61 = 0011 1101 */
         Console.WriteLine("Line 2 - Value of c is {0}", c);
         // Bitwise XOR Operator
         c = a ^ b; /* 49 = 0011 0001 */
         Console.WriteLine("Line 3 - Value of c is {0}", c);
         // Bitwise Complement Operator
         c = ~a; /*-61 = 1100 0011 */
         Console.WriteLine("Line 4 - Value of c is {0}", c);
         // Bitwise Left Shift Operator
         c = a << 2; /* 240 = 1111 0000 */
         Console.WriteLine("Line 5 - Value of c is {0}", c);
         // Bitwise Right Shift Operator
         c = a >> 2; /* 15 = 0000 1111 */
         Console.WriteLine("Line 6 - Value of c is {0}", c);
         Console.ReadLine();
      }
   }
}
出力
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15
>
  1. Rubyでのビット単位のハック

    通常、日常業務でビット単位の計算を行う必要はない可能性があります。 Rubyのビット単位のANDおよびOR演算子(&および|)は、意図的ではなく偶然に使用される可能性があります。誤って入力していないのは誰ですか? しかし、Cやアセンブラー、または私の場合はTurbo Pascalのような低レベルの言語をプログラミングして育った場合は、おそらく少なくとも少し手を加えたことがあるでしょう。 問題に対するビット単位の解決策はクールです。コンピューターが実行できる最も基本的な操作(2進数学)を使用して問題を解決できる場合、それ以上にエレガントになることはありません。 Rubyでのバイナリの操作

  2. Rubys Bitwise Toolbox:演算子、アプリケーション、および魔法のトリック

    Railsアプリの構築に一生を費やすことができ、ビット演算子を使用する必要はありません。プログラミングに不慣れな場合は、「ビット単位」が何を意味するのかさえわからないかもしれません。 しかし、効率が重要でリソースが限られているシステムに関心を持った瞬間、ビット単位の操作が重要になります。これらは、ネットワークプロトコル、暗号化、Unixファイルのアクセス許可、組み込みシステムなどで広く使用されています。 さらに、コンピューターが2つの数値を加算するなどの動作を実際に理解するには、ビット演算を理解する必要があります。 Rubyや他の多くの言語はネイティブサポートを備えているため、将来