3

だから私はちょうど今いじって、これを書きました:

        int i = 0|1|2|3|4|5|6|7|8|9|10;

        Console.WriteLine(i.ToString());
        Console.Read();

これは 15 を出力します。なぜ 15 を出力するのですか? パイプオペレーターは何をしますか?

これが実際に使用される可能性のある場所の例を教えてください。

これが無意味な質問のように思えるかどうかは理解しています。

4

3 に答える 3

17

それはビット単位の OR 演算子です。

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 

参考文献

于 2013-04-02T20:44:00.073 に答える
1

|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 
于 2013-04-02T20:48:33.913 に答える
0

これらの数値のバイナリ表現のビットごとの OR をとっています。0 から 10 までの 2 進数は次のようになります。

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010

これらすべての数字の各桁の OR を実行すると1111、10 進数で 15 になる - になります。

于 2013-04-02T20:47:56.917 に答える