我见过许多使用|
或&
的情况,但我还没有理解它们的用途。我知道&&
和||
的含义,但我想知道它们与单个字符对应物之间的区别。此外,如果有人可以向我展示使用|
和&
的示例(请在Swift 2中),那将会很棒。谢谢
答案 0 :(得分:2)
您可以在Swift文档中了解它们及其差异。
逻辑运算符 1
逻辑运算符修改或组合布尔逻辑值true和 假。 Swift支持三种标准逻辑运算符 基于C语言:
Logical NOT (!a) Logical AND (a && b) Logical OR (a || b)
按位运算符 2
按位运算符使您可以操作单个原始数据 数据结构中的位。它们通常用于低级别 编程,例如图形编程和设备驱动程序创建。 当您使用原始数据时,按位运算符也很有用 外部源,例如用于通信的编码和解码数据 通过自定义协议。
Swift支持C中的所有按位运算符,如上所述 下方。
答案 1 :(得分:2)
有关按位运算符,请参阅Wikipedia page on Bitwise Operation和Swift documentation。
这些是按位运算符。 &
为按位AND,|
为按位OR。
请参阅以下示例:
0011 (decimal 3)
AND 0010 (decimal 2)
= 0010 (decimal 2)
0101 (decimal 5)
OR 0011 (decimal 3)
= 0111 (decimal 7)
来源:Wikipedia
之前在StackOverflow上讨论过按位运算符的用法:
使用按位XOR(不是你的问题,但无论如何都是一个很酷的逻辑门)引起了我的注意(通过@ Vilx- here)(我不知道它是如何工作的,但答案被接受并上调了34次)
编辑:如果你想知道它是如何运作的,可以在XOR swap algorithm - Wikipedia
上进行一个很好的简单证明交换两个没有中间变量的整数变量:
A = A^B // A is now XOR of A and B
B = A^B // B is now the original A
A = A^B // A is now the original B
如果这些没有帮助,我在这篇文章中已经链接过两次的维基百科页面有一个Applications部分,但它们并不适用于更高级别的语言(除非一些您希望优化算法以仅使用按位运算的原因。)
答案 2 :(得分:1)
&
和|
是按位运算符,它们比较位表示(二进制值)。
`&` -bitwise AND operator
`|` -bitwise OR operator
&&
和||
用于比较int,double,etc.
等基元的实际值和对象的地址。它们被称为逻辑运算符。
1. Lets go to an example to make it simpler (bitwise operator):
int p=9; int q=10;
//binary representation of 9 and 10 are 1001 and 1010 respectively.
现在,p & q
在每个位位置返回一个
两个操作数的相应位是1。
p|q
在每个位的位置返回一个,其中一个或两个操作数的相应位为1。
2.An example for logical operators.
int p=9; int q=10;
p>0 && q>0
返回true,因为p
和q
都大于0
(因为运算符两边的条件都为真)。
p>0 || q<0
返回true,因为至少有一个条件为真(此处,p大于0)。
我希望这有助于您了解bitwise
和logical
运营商之间的区别。