介绍
计算机中的逻辑关系是一种二值逻辑,二值逻辑很容易用二进制的数 1(true)或 0(false)表示,例如真与假、是与否、成立于不成立
- 包括逻辑“与”、逻辑“或”、逻辑“非”、逻辑“异或”。
- 我在不同的地方查二进制逻辑运算发现使用的符号有多种,这里采用算法竞赛中所使用的符号。
逻辑“与”
“与”运算(逻辑乘),用符号 “ & \& &” 或 a n d and and 表示。
- 1 & 1 = 1 1\ \&\ 1=1 1 & 1=1
- 0 & 0 = 0 0\ \&\ 0=0 0 & 0=0
- 1 & 0 = 0 1\ \&\ 0=0 1 & 0=0
- 0 & 1 = 0 0\ \&\ 1=0 0 & 1=0
例:
1010
&
1010\ \&
1010 &
1001
‾
=
\underline{1001}=
1001=
1000
1000
1000
小结:一位为
0
0
0,结果为
0
0
0;若都为
1
1
1,结果为
1
1
1。
逻辑“或”
“或”运算(逻辑加),用符号 “ ∣ | ∣” 或 o r or or 表示。
- 1 ∣ 1 = 1 1\ |\ 1=1 1 ∣ 1=1
- 0 ∣ 0 = 0 0\ |\ 0=0 0 ∣ 0=0
- 1 ∣ 0 = 1 1\ |\ 0=1 1 ∣ 0=1
- 0 ∣ 1 = 1 0\ |\ 1=1 0 ∣ 1=1
例:
1010
∣
1010\ |
1010 ∣
1001
‾
=
\underline{1001}=
1001=
1011
1011
1011
小结:一位为 1,结果为 1;若都为
0
0
0,结果为
0
0
0。
逻辑“非”
“非”运算(逻辑否),用符号 “~” 或 n o t not not 表示。
- ~1 = 0
- ~0 = 1
例:~
10
=
10=
10=
01
\ \ 01
01
小结:非
1
1
1 为
0
0
0,非
0
0
0 为
1
1
1。
逻辑“异或”
“异或”运算通常用符号 “xor”1 表示,其运算规则为:
- 0 x o r 0 = 0 0\ xor\ 0=0 0 xor 0=0
- 0 x o r 1 = 1 0\ xor\ 1=1 0 xor 1=1
- 1 x o r 0 = 1 1\ xor\ 0=1 1 xor 0=1
- 1 x o r 1 = 0 1\ xor\ 1=0 1 xor 1=0
例:
1010
x
o
r
1010\ xor
1010 xor
1001
=
1001=
1001=
0011
0011
0011
小结:不同为
1
1
1;相同为
0
0
0。
一般“^”符号用于表示乘方运算,但在 C++ 中表示为异或。为了避免歧义我们统一将异或用“xor”表示 ↩︎