だから私はちょうど今いじって、これを書きました:
int i = 0|1|2|3|4|5|6|7|8|9|10;
Console.WriteLine(i.ToString());
Console.Read();
これは 15 を出力します。なぜ 15 を出力するのですか? パイプオペレーターは何をしますか?
これが実際に使用される可能性のある場所の例を教えてください。
これが無意味な質問のように思えるかどうかは理解しています。
だから私はちょうど今いじって、これを書きました:
int i = 0|1|2|3|4|5|6|7|8|9|10;
Console.WriteLine(i.ToString());
Console.Read();
これは 15 を出力します。なぜ 15 を出力するのですか? パイプオペレーターは何をしますか?
これが実際に使用される可能性のある場所の例を教えてください。
これが無意味な質問のように思えるかどうかは理解しています。
OR 演算子の基本的な真理値表は次のとおりです。
A B A|B
0 0 0
0 1 1
1 0 1
1 1 1
0|1|2|3|4|5|6|7|8|9|10
したがって、ケースをバイナリで分析するには、次のようにします。
0 = 0b00000
1 = 0b00001
2 = 0b00010
3 = 0b00011
4 = 0b00100
5 = 0b00101
6 = 0b00110
7 = 0b00111
8 = 0b01000
9 = 0b01001
10 = 0b01010
------------
15 = 0b01111
参考文献
|
C# (および他の多くの言語) のビットごとの OR 演算子です。2 つのビット間の OR 演算は次のようになります。
0 | 0 = 0
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1
10 進数で 1 | 2 は 01 になります | 2 進数では 10 で、結果は 11 (10 進数では 3) になります。
01
10
--
11
ビットごとの OR は累積演算なので、次のようになります。
0 = 00000
1 = 00001
2 = 00010
3 = 00011
4 = 00100
5 = 00101
6 = 00110
7 = 00111
8 = 01000
9 = 01001
10 = 01010
------------
15 = 01111
これらの数値のバイナリ表現のビットごとの OR をとっています。0 から 10 までの 2 進数は次のようになります。
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
これらすべての数字の各桁の OR を実行すると1111
、10 進数で 15 になる - になります。