管道操作员,它是如何工作的?

时间:2013-04-02 20:40:06

标签: c# pipe operator-keyword

所以我刚刚搞砸了并写出来了:

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

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

此输出15.为什么输出15?管道操作员做了什么?

你能给我一个实际使用它的例子。

我理解这是否是一个毫无意义的问题。

3 个答案:

答案 0 :(得分:15)

这是bit-wise OR operator

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 

进一步阅读

答案 1 :(得分:1)

|是C#(以及许多其他语言)中的按位OR运算符。两位之间的OR运算如下:

0 | 0 = 0
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1

所以在十进制1 | 2变为01 | 10为二进制,结果为11(十进制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 

答案 2 :(得分:0)

您正在采用这些数字的二进制表示的逐位OR。二进制数字0到10看起来像:

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010

如果要对所有这些数字的每个数字执行OR,最终会得到1111 - 十进制数为15。