欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

逻辑运算符与位运算符

程序员文章站 2022-05-18 15:58:20
...

逻辑运算符
1. && 逻辑与
两个条件都为真,则结果为真
if((a>b) && (a<c))
if(b<a<c) //这种表达方式是错误的
2. || 逻辑或
两个条件至少有一个为真,则结果为真
if((a>b) || (a<c))
3. ! 逻辑非
if(!(a>b))
{
}

逻辑与:  A  &&   B      只有A 和 B同时为真  整个表达式为真   ,      如果A为假 ,不会再判断B的真假(逻辑与的短路特性)

逻辑或:  A   ||    B        只有A 和 B同时为假  整个表达式为假           如果A为真,不会再判断B的真假(逻辑或的短路特性)

逻辑运算符与位运算符
位运算
按位与:&
1100 0011
1111 0000
-------------------------------------------------------------------------------------------------------
1100 0000
语法:全1为1 其他为0
特点:和1相与 不变 和0相与为0
场景:将固定位 清0
案例:请将num =1100 0011的0、1位清0,其他位不变

1100 0011
1111 1100 &
-------------------------------------------------------------------------------------------------------------------------
1100 0000
num = num & 1111 1100

按位或:|
1100 0011
1111 0000 |
------------------------------------------------------------------------------------------------------
1111 0011
语法:有1为1 全0为0
特点:和0相或 保持不变 和1相或 置1
场景:将固定位 置1
案例:请将num=1100 0011的4、5位置1,其他位不变

1100 0011
0011 0000  |
-------------------------------------------------------------------------------------------------------------------------
1111 0011
num = num | 0011 0000

按位取反:~
语法:0变1 1变0
~(1100 0011) == 0011 1100
按位异或:^
1100 0011
1111 0000 ^
----------------------------------------------------------------------------------------------------
0011 0011
1111 0000 ^
----------------------------------------------------------------------------------------------------
1100 0011

语法:相同位0  不同为1    
特点:和0异或 不变     和1异或  取反    
场景:将固定的位 发生翻转
相关标签: C语言