ビット演算子はビットに作用し、ビットごとに演算を実行します。
C# は、次の表に示すようにビット単位の演算子をサポートしています。変数 A が 60、変数 B が 13 であるとします。 -
Operator
|
Description
| 例
|
##& | ビットごとの AND 演算子は、ビットを結果にコピーします (if両方のオペランドに存在します)。 ##(A & B) = 12、つまり 0000 1100 |
|
#|
#ビットごとの OR 演算子は、どちらかのオペランドにビットが存在する場合、ビットをコピーします。
|
#(A | B) = 61、つまり 0011 1101
|
| #^
#ビットごとの XOR 演算子は、一方のオペランドにビットが設定されているが両方には設定されていない場合にビットをコピーします。
|
#(A ^ B) = 49、つまり 0011 0001
|
| #~
ビットごとの補数演算子は単項であり、ビットを「反転」する効果があります。
|
(~A ) = 61。これは符号付き 2 進数なので、2 の補数 1100 0011 です。
|
# |
ビット単位の左シフト演算子 左オペランドの値 左にシフト右オペランドで指定されたビット数で計算されます。
|
#A
|
##>>
|
ビット単位右シフト演算子
左オペランドの値は、右オペランドで指定されたビット数だけ右にシフトされます。
|
#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 & 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
ログイン後にコピー
h2>
以上がC# のビット演算子とシフト演算子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。