运算符 结晶

逻辑运算符

优先级:  !  >>   &&   >>  ||

短路规则:

||  从左向右開始计算,当遇到为真条件时停止计算, 整个表达式为真;全部条件为假时,表达式为假

&& 从左向右開始计算,当遇到为假条件时停止计算, 整个表达式为假;全部条件为真时,表达式为真




C中逻辑符 仅仅认得0,见了0就返回1.
当其作用值不是0时,其结果为0.



三目运算符

三目运算符(a?

b:c)能够作为逻辑运算符的载体

规则:当a的值为真时,返回b的值;否则返回c的值



逗号运算符

逗号运算符
     一般形式:表达式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次方,效率比数学运算符高




posted on 2017-08-17 08:29  ljbguanli  阅读(142)  评论(0编辑  收藏  举报