什么是|和^运算符用于?

时间:2010-09-17 13:16:28

标签: c# .net operators

  

可能重复:
  What are bitwise operators?

最近我遇到了一些使用了|的样本和^运算符。我猜这些是ornegation运营商。

那么这些运营商究竟代表什么呢?

6 个答案:

答案 0 :(得分:25)

  • | =(按位/非短路)“或”
  • ^ =“xor”

并且对于info,“not”(按位否定)是~

答案 1 :(得分:17)

如果将它应用于整数类型,则它们是按位或xor运算符。 但是,如果将它们应用于布尔类型,则它们是逻辑或xor。 查看or operatorxor operator

的说明

您可以从维基百科truth table

获取有关布尔操作的更多详细信息

答案 2 :(得分:7)

MSDN有关于所有C#运营商的文档:

http://msdn.microsoft.com/en-us/library/6a71f45d.aspx


编辑 - Jon B评论说,链接文档中的相关引用会很有用。

|Logical OR operator

  

二进制|运算符是为整数类型和bool预定义的。对于整数类型,|计算其操作数的按位OR。对于bool操作数,|计算其操作数的逻辑OR;也就是说,当且仅当两个操作数均为假时,结果为false。

^Logical XOR operator

  

二进制^运算符是为整数类型和bool预定义的。对于整数类型,^计算其操作数的按位异或。对于bool操作数,^计算其操作数的逻辑异或;也就是说,当且仅当其中一个操作数为真时,结果才为真。

答案 3 :(得分:2)

它们是逻辑按位运算符

|是或link

^是XOR link

答案 4 :(得分:2)

使用整数类型,|是一个按位或者,一个按位xor和完整性&是一个按位和。

使用布尔类型,|是一个布尔值,或者是一个布尔值xor和&布尔&。

相比之下,||是一个短路布尔值 - 如果第一个操作数的计算结果为true,则不计算第二个操作数。 &安培;&安培;是一个短路布尔值 - 如果第一个操作数为假,则不计算第二个操作数。没有短路^因为不存在不需要评估第二个的情况。

||和&&比|经常使用和&在布尔情况下,因为通常至少有一个微小的效率增益而且永远不会丢失。但是,如果右手操作数有副作用,在所有情况下触发都很重要,那么|或者&将是一个使用。在实践中,这是罕见的,并且有难闻的气味(如果副作用很重要,应该在单独的表达式中进行评估,以使目的更清晰)。

编辑:潜在混淆的一个原因是,在其他一些语言中,整数类型可以用作布尔值(例如,你可以if(53),它与if(true)相同)这使得区别上面的运算符完全不同:如果使用“纯粹”的布尔类型(它只有true和false作为其可能的值),它们是相同的,但不是其他。 C#故意不允许对整数类型进行精确的布尔运算,以防止存在这些语言中存在错误的可能性。

答案 5 :(得分:-6)

^逻辑XOR

|逻辑OR

更新

在c#中也是逻辑运算:

    Console.WriteLine(true ^ false);  // logical exclusive-or
    Console.WriteLine(false ^ false); // logical exclusive-or