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 运算符的基本真值表是:

  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 运算符。两位之间的 OR 操作如下所示:

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

所以十进制 1 | 2变成01 | 二进制的 10,结果为 11(十进制的 3),如下所示:

01
10
--
11

按位或是累积运算,因此:

 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

您正在对这些数字的二进制表示进行按位或。二进制中的数字 0 到 10 如下所示:

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010

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

于 2013-04-02T20:47:56.917 回答