一、前言
逻辑运算符在计算机编程中起着重要作用, 它可以和条件判断语句以及循环结构一起使用, 控制程序的逻辑, 构建强大的逻辑系统.
在数字电路中, 有三个基本逻辑门, 即 或, 与, 非. 在C语言中,也很类似, 主要的逻辑运算符有 ||
, &&
, !
, ^
, 分别表示 或, 与, 非, 异或. 下面将详细介绍这四个逻辑运算符.
二、有关逻辑门的介绍
2.1 逻辑或(or)运算符(||
)
逻辑或运算符在C语言中用||
表示.
运算法则: 有A, B两个操作数, 当A和B中有一个为真时,A || B
结果为真, 反之为假.
也就是0和1做加法运算.
下面附上或运算符||
的真值表:
A | B | 结果 |
---|---|---|
假 | 真 | 真 |
真 | 假 | 真 |
真 | 真 | 真 |
假 | 假 | 假 |
下面看一个例子:
例2.1:
# include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = 2;
if (a || b) // 当a || b为真时 (0 || 1为真, 执行该语句块)
{
printf("a || b为真\n");
}
if (b || c) // 当b || c为真时 (1 || 2为真, 执行该语句块)
{
printf("b || c为真\n");
}
return 0;
}
运行结果:
2.2 逻辑与(and)运算符(&&
)
逻辑与运算符在C语言中用&&
表示.
运算法则: 有A, B两个操作数, 当A和B中两个都为真时,A && B
结果为真, 反之为假.
也就是0和1做乘法运算.
下面附上与运算符&&
的真值表:
A | B | 结果 |
---|---|---|
假 | 真 | 假 |
真 | 假 | 假 |
真 | 真 | 真 |
假 | 假 | 假 |
下面看一个例子:
例2.2:
# include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = 2;
if (a && b) // 当a && b为真时 (0 && 1为假, 不执行该语句块)
{
printf("a && b为真\n");
}
if (a && c) // 当a && c为真时 (0 && 2为假, 不执行该语句块)
{
printf("a && c为真\n");
}
if (b && c) // 当b && c为真时 (1 && 2为真, 执行该语句块)
{
printf("b && c为真\n");
}
return 0;
}
运行结果:
2.3 逻辑非(not)运算符(!
)
逻辑非运算符在C语言中用!
表示.
运算法则: 有操作数A, 当A为真时,!A
结果为假, 当A为假时, !A
为真.
也就是0或1做取反运算.
下面附上非运算符!
的真值表:
A | 结果 |
---|---|
假 | 真 |
真 | 假 |
下面看一个例子:
例2.3:
# include <stdio.h>
int main()
{
int a = 0;
if (!a) // 当!a为真时 (!0 = 1, 为真, 执行该语句块)
{
printf("!a为真\n");
}
if (a) // 当a为真时 (a = 0, 为假, 不执行该语句块)
{
printf("a为真\n");
}
return 0;
}
运行结果:
2.4 逻辑异或(xor)运算符(^
)
逻辑异或运算符在C语言中用^
表示.
运算法则: 有A, B两个操作数, 当A和B相异时,A ^ B
结果为真, 反之为假.
也就是
(
a
+
b
)
∗
(
(
a
∗
b
‾
)
)
(a+b)*((\overline{a*b}))
(a+b)∗((a∗b)).
下面附上异或运算符^
的真值表:
A | B | 结果 |
---|---|---|
假 | 真 | 真 |
真 | 假 | 真 |
真 | 真 | 假 |
假 | 假 | 假 |
下面看一个例子:
例2.4:
# include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = 2;
if (a ^ b) // 当a和b相异时 (0与1不同, a ^ b为真, 执行该语句块)
{
printf("a和b相异\n");
}
if (b ^ c) // 当b和c相异时 (1和2不同, 因此b ^ c为真, 执行该语句块)
{
printf("b和c相异\n");
}
if (b ^ (c - b)) // 当b和(c-b)相异时 (1和2-1相同, 因此b ^ (c - b)为假, 不执行该语句块)
{
printf("b与(c - b)相异\n");
}
return 0;
}
运行结果: