什么是 C# 独占或“^”用法?

发布于 2024-11-16 18:48:03 字数 63 浏览 4 评论 0原文

谁能用一个很好的例子来解释这个运算符?

我知道这个运算符是什么。我的意思是一个现实生活中的例子。

Can anyone explain this operator with a good example?

I know what this operator is. I mean a real-life example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

顾挽 2024-11-23 18:48:03

它是逻辑运算异或

http://en.wikipedia .org/wiki/Exclusive_or

异或常用于按位运算。示例:

  • 1 异或 1 = 0
  • 1 异或 0 = 1
  • 0 异或 1 = 1
  • 0 异或 0 = 0
  • 1110 xor 1001 = 0111(相当于不进位的加法)

如上所述,由于异或与模 2 的加法相同,因此两个 n 位字符串的按位异或与向量空间 (Z/2Z)^4 中的标准加法向量相同。

在计算机科学中,互斥析取有多种用途:

  • 它告诉两个位是否不相等。
  • 它是一个可选的位翻转器(决定输入选择是否反转数据输入)。
  • 它表明是否存在奇数个 1 位(当且仅当奇数个变量为真时为真)。

(以及大量其他用途)

It is an implementation of the the logical operation exclusive disjunction

http://en.wikipedia.org/wiki/Exclusive_or

Exclusive disjunction is often used for bitwise operations. Examples:

  • 1 xor 1 = 0
  • 1 xor 0 = 1
  • 0 xor 1 = 1
  • 0 xor 0 = 0
  • 1110 xor 1001 = 0111 (this is equivalent to addition without carry)

As noted above, since exclusive disjunction is identical to addition modulo 2, the bitwise exclusive disjunction of two n-bit strings is identical to the standard vector of addition in the vector space (Z/2Z)^4.

In computer science, exclusive disjunction has several uses:

  • It tells whether two bits are unequal.
  • It is an optional bit-flipper (the deciding input chooses whether to invert the data input).
  • It tells whether there is an odd number of 1 bits ( is true iff an odd number of the variables are true).

(and a whole ton of other uses)

五里雾 2024-11-23 18:48:03

例如,像这样:

var result = a ^ b;

result          a        b
--------------------------------
true            true    false
true            false   true
false           true    true
false           false   false

For example, like this:

var result = a ^ b;

result          a        b
--------------------------------
true            true    false
true            false   true
false           true    true
false           false   false
写给空气的情书 2024-11-23 18:48:03

为了使“异或”计算结果为真,只有一个操作数必须为真。

foo ^ bar

相当于

(foo && !bar) || (!foo && bar)

For "exclusive or" to evaluate to true one and only one operand has to be true.

foo ^ bar

is equivalent to

(foo && !bar) || (!foo && bar)
像你 2024-11-23 18:48:03

使用 XOR 时,仅当比较语句中只有一个为 true 时,该语句的计算结果才为 true。所以:

bool foo = true;
bool bar = false;
if (foo ^ bar) { bar = true;} // this evaluates to true 
bool baz = foo ^ bar; // This evaluates to false, since both statements are now true. 

When using XOR, the statement only evaluates to true if only ONE of the compared statements is true. So:

bool foo = true;
bool bar = false;
if (foo ^ bar) { bar = true;} // this evaluates to true 
bool baz = foo ^ bar; // This evaluates to false, since both statements are now true. 
韬韬不绝 2024-11-23 18:48:03

XOR 是一种常见的布尔运算符,在 C# 中没有什么独特之处。
我建议阅读一些有关布尔代数的内容,了解它在 1 位中的用途,
然后检查当您对任意两个数字或字符 a 和 b 进行 (a XOR b) XOR b 时会得到什么。

XOR is a common boolean operator and has nothing unique to it in C#.
I suggest reading a little about boolean algebra to learn what it is used for with 1 bit,
then check what you get when you do (a XOR b) XOR b with any two numbers or characters a and b.

一百个冬季 2024-11-23 18:48:03

编程语言的参考始终是查找运算符定义的最佳位置。

在这种情况下,MSDN 是 C# 运算符最合适的定义。

根据文档

二元 ^ 运算符是预定义的
整数类型和 bool。为了
整数类型,^ 计算按位
其操作数的异或。对于布尔值
操作数,^ 计算逻辑
其操作数的异或;那是,
当且仅当结果为真
它的操作数之一恰好为 true。

还列出了一个示例。

A programming language's reference is always the best place to look for the definitions of operators.

In this case, MSDN is the most appropriate definition for a C# operator.

According to the documentation:

Binary ^ operators are predefined for
the integral types and bool. For
integral types, ^ computes the bitwise
exclusive-OR of its operands. For bool
operands, ^ computes the logical
exclusive-or of its operands; that is,
the result is true if and only if
exactly one of its operands is true.

An example is also listed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文