写程序过程中我们会经常使用到这四个运算符,为了更清楚地理解和区分,下面就专门把这四个运算符放一起讲讲。
一、逻辑运算符
1、&&:逻辑与
运算对象是逻辑值
bool a=ture;
bool b=false;
bool c=ture;
// 布尔类型中的ture和false,对应1和0
if(a&&b){}
if(a&&c){}
只有当运算符&&两边运算对象同时为ture时,运算结果才为ture,判断语句才执行;
其它情况下运算结果均为false,判断语句不执行
2、|| :逻辑或
运算对象是逻辑值
bool a=ture;
bool b=false;
bool c=ture;
if(a||b){}
if(a||c){}
只要运算符||两边运算对象有一个为ture,运算结果就为ture,判断语句执行;
只有运算符||两边运算均为false,运算结果才是false,判断语句不执行;
二、位运算符
1、&:按位与
运算对象是位
与运算规则如下:
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
以8位usigned char(无符号字符)的按位与运算进行举例:
unsigned char a=0x12; //转换为二进制为:0001 0010
unsigned char b=a&0xFF; //0xFF对应二进制为:1111 1111
此处a&0xFF即:
0001 0010
& 1111 1111
-------------
0001 0010
所以b=a=0x12;
2、| :按位或
运算对象是位
运算规则如下:
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
以8位usigned char(无符号字符)的按位或运算进行举例:
unsigned char a=0x12; //转换为二进制为:0001 0010
unsigned char b=a|0x00; //0x00对应二进制为:0000 0000
此处a|0xFF即:
0001 0010
| 0000 0000
-------------
0001 0010
所以b=a=0x12;
三、总结
1、计算机中的逻辑运算又被称作为“布尔运算”,分别为:逻辑与运算、逻辑或运算,逻辑非运算,“逻辑异或运算。此外在门电路中还有:同或运算、与非运算、或非运算。共七种
逻辑运算只有两个布尔值:
0
,表示假值(False)。1
,表示真值(True)。
2.位运算
1)&:按位与
2)|:按位或
3)^:按位异或
4)~ :按位取反
5)<<:左移
具体应用的话,比如报文解析时需要将数据按规定字节序进行整合时,会用到位运算。