逻辑运算logic
•逻辑值: 1(true)和0(false)
•逻辑运算符有三个:
•逻辑非 !
•逻辑与 &&
•逻辑或 ||
注:数学上用¬表示逻辑非,∧为逻辑与,∨表示逻辑或。
1、逻辑非(!)运算
经过逻辑非运算,一个表达式的真假值与原来相反。表格如下。
Reverse the result, returns false if the result is true
| A值 | !A的值 |
| 0 | 1 |
| 1 | 0 |
2、逻辑与(&&):
若参加运算的某个逻辑值为假,其结果 也为假,只有当参加运算的所有逻辑值都是真,其结果也是真,表格如下:
Returns true if both statements are true
| A的值 | B的值 | A&&B |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
3、逻辑或(||):
若参加运算的某逻辑值是真,哪结果也是真,只有当参加运算的条件都是假,其结果才是假,表格如下:
| A的值 | B的值 | A||B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
逻辑基本运算定律
在逻辑运算(布尔代数)中,变量只有 0(假) 和 1(真) 两种状态。以下是化简逻辑表达式的核心定律:
1. 基础代谢定律(状态处理)
- 0-1 律 (Constants):
A || 0 = A;A && 1 = AA || 1 = 1;A && 0 = 0
- 重叠律 (Idempotent):
A || A = AA && A = A
- 互补律 (Complement):
A || !A = 1(必有一真)A && !A = 0(不可同时为真)
- 反演律 (Double Negation):
!!A = A(负负得正)
2. 运算顺序定律(代数性质)
- 交换律 (Commutative):
A || B = B || A - 结合律 (Associative):
或运算结合律:(A || B) || C = A || (B || C)
与运算结合律:(A && B) && C = A && (B && C) - 分配律 (Distributive):
A && (B || C) = (A && B) || (A && C)A || (B && C) = (A || B) && (A || C)(注意:这是逻辑运算特有的,普通代数不适用)
3. 高级化简定律(实战常用)
- 德·摩根定律 (De Morgan’s):
!(A && B) = !A || !B(非“与”变“或”)!(A || B) = !A && !B(非“或”变“与”)
- 吸收律 (Absorption):
A || (A && B) = AA && (A || B) = A
练习
说明如下表达式的结果为真(true)还是假(flase).
(1>=2) && (3>=2)
(1<2) || (4>1)
(5/2)||(4%2)
(1>0)&&(!(2>0))
设计一个程序,输入三个整数a,b,c,判断以这三个整数为边长能否构成一个三角形。如果能,请输出yes,否则输出no。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //triangle #include <iostream> using namespace std; int main() { float a,b,c; cin>>a>>b>>c; if(a+b>c&&b+c>a&&a+c>b) {cout<<"this is a triangle\n";} else {cout<<"this is not a triangle\n";} return 0; } |
Quizzes
