逻辑运算符
优先级:  !  >>   &&   >>  ||
短路规则:
||  从左向右開始计算,当遇到为真条件时停止计算, 整个表达式为真;全部条件为假时,表达式为假
&& 从左向右開始计算,当遇到为假条件时停止计算, 整个表达式为假;全部条件为真时,表达式为真
C中逻辑符 !仅仅认得0,见了0就返回1.
当其作用值不是0时,其结果为0.
三目运算符
逗号运算符
逗号运算符
     一般形式:表达式1,表达式2,表达式3......表达式n
     求解过程:先求解表达式1,再求表达式2....整个逗号表达式的值是表达式1或n的值
1.  x=(a=3,6*3)    赋值表达式,将一个逗号表达式的值赋值给x,x的值为18.
2.  x=a=3,6*a       逗号表达式,包含一个赋值表达式和一个算术表达式,x值为3
 
算术运算符
 + - *  /  %<取模>
作除数和求余,商的正、负和除数有关,和被除数无关
求余时,被除数仅仅能够为整型
位运算符
| 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 
| 第七位 | 第六位 | 第五位 | 第四位 | 第三位 | 第二位 | 第一位 | 第零位 | 
1 <<5  1左移到第五个位置  
0x... 0010 0000 
 
位与运算符 (&)
參加运算的两个数据,按二进制位进行“与”运算
运算规则: 0&0=0;   0&1=0;     1&1=1;
       即:两位同一时候为“1”,结果才为“1”,否则为0
比如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   3&5 的值得1
与运算 用途:
(1) 清零  假设想将一个单元清零,仅仅要与一个各位都为零的数值相与,结果为零 
(2) 取一个数中指定位
方法:找一个数,相应X要取的位,该数的相应位为1;其余位为零,此数与X相与就可以
例:设X=10101110,
    取X的低4位,用 X & 0000 1111 = 0000 1110 就可以
 
位或运算符 (|)
參加运算的两个对象,按二进制位进行“或”运算
运算规则:  0|0=0;  0|1=1;     1|1=1;
      即: 參加运算的两个对象仅仅要有一个为1,其值为1
比如:3|5 即 0000 0011 | 0000 0101 = 0000 0111  3|5的值得7
或运算作用:
(1)经常使用来对一个数据的某些位置1
方法:找到一个数,相应X要置1的位,该数的相应位为1,其余位为零.此数与X相或就可以
例: 将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111就可以 
异或运算符 (^)
參加运算的两个数据,按二进制位进行“异或”运算
运算规则: 0^0=0;   0^1=1;   1^0=1;   1^1=0
   即:參加运算的两个对象,假设两个对应位为“异”(值不同),则该位结果为1,否则为0 
异或运算作用:
(1) 使特定位翻转  找一个数,相应X要翻转的各位,该数的相应位为1,其余位为零,此数与X相应位异或就可以
例: X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001就可以 
(2) 与0相异或  保留原值 ,X ^ 0000 0000 = 1010 1110
取反运算符 (~)
參加运算的一个数据,按二进制位进行“取反”运算
运算规则: ~1=0;   ~0=1;
      即:对一个二进制数按位取反,将0变1,1变0 
取反运算作用:
(1) 使一个数的最低位为零,能够表示为:a&~1
~1的值为1111111111111110,再按“与”运算,最低位一定为0.
运算符优先级
~  >> 算术运算符  >> 关系运算符 >> 逻辑运算符
 
左移运算符 (<<)
将一个运算对象的各二进制位所有左移n位 (高位丢弃,低位补0)
例: a = a << 2 将a的二进制位左移2位,低位补00 
左移2位后相当于a  =  a * 2 *2;
若左移时舍弃的高位不包括1,则每左移一位,相当于该数乘以2
右移运算符 (>>)
将一个数的各二进制位所有右移n位,正数高位补0,负数低位补1,右边丢弃
操作数每右移一位,相当于该数除以2
比如: a = a >> 2 将a的二进制位右移2位 
 
 
防错准则
     避免位运算符,逻辑运算符和数学运算符同一时候出如今一个表达式中
     假设须要同一时候运算,尽量用( )来表达计算顺序
小技巧
     左移n位相当于乘以2的n次方,效率比数学运算符高
     右移n位相当于除以2的n次方,效率比数学运算符高