C语言逻辑运算符,位运算符总结

& | ~ ^  >>  << && || !

运算符包括逻辑运算符与位运算符。

逻辑运算符针对的就是真假问题,或者说0 1 问题,也就是bool类型的。

位运算符重点在于位操作,也就是对每一位进行操作。下面逐个介绍。

 

  • 当 & 两边是bool 类型的值时,该运算符作为逻辑运算符。作用如下:

当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

  • 当 & 两边不是bool类型的时候,该运算符作为位运算符,将两边的值作为二进制展开,依次对每一位进行 按位与。作用如下:

11100101 & 01011010 = 01000000

 

&&

逻辑运算符,当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&& 与 & 的 都作为逻辑运算符的区别:

  • 两个运算符运算结果一样。
  • &&又叫短路与,如果左边位flase,那么该结果就已经出来了,则不会再计算右边的布尔表达式,从而提高效率。而&即使左边位flase,还是会计算右边的。所以如果左边位flase时,&&的效率高于&。 


|

  • 当两边是bool运算符时,该运算符作为逻辑运算符。作用如下:

只要两边的布尔表达式有一边为true,那么结果就为true,只有两边同时为false 的时候,结果才是false。

  • 当 | 两边不是bool类型的时候,该运算符作为位运算符,将两边的值作为二进制展开,依次对每一位进行 按位或。作用如下:

11100101 | 01011010 = 11111111

 

||

逻辑运算符,只要两边的布尔表达式有一边为true,那么结果就为true,只有两边同时为false 的时候,结果才是false。

|| 与 | 的 都作为逻辑运算符的区别:

  • 两者运算结果一样
  • 使用短路或的时候,当发现左边的布尔表达式为true时,则不会运算右边的布尔表达式。使用单或的时候发现左边的布尔表达式为true,还是会运算右边布尔表达式。当左边位true时,|| 效率高于|

 

 

^

逻辑运算符,异或。也就是 只要两边的布尔表达式结果不一致,那么结果就为true,如果左右两边的布尔表达式一致,那么就为false。(相同为0,不同为1)。    

例如:00000101 ^ 00000011 = 00000110

 

逻辑运算符,非运算符。非0为1,非1为0.

 

 

~ 位运算符,对每一位进行取反。

例如:00000111 取反  11111000 

 

<< 

移位运算符,左移。

一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移的位数.

 

>> 

移位运算符,右移。

一个操作数在做右移运算的时候,实际上就是等于该操作数除以2的n次方,n就是右移的位数。

 

? :

三元运算符

当使用三元运算符时,一定要定义一个变量来接受返回的结果, 

使用方法:变量 =  表达式 ?正确 :错误    

 

部分来自:http://blog.csdn.net/qq_34944851/article/details/52620454

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(C,C)