一, <<和>>:就是cout和cin后面的那个,但在这里并不是说cout和cin后面那个。它们是位左移运算符和右移运算符,它们的作用是把一个数的二进制形式向左或向右移动。
举两个例子,18(二进制形式为00010010)<<2 = 72 (二进制形式为01001000,18的二进制形式向左移了两位),77(二进制形式为1001101)>>3=9(二进制形式为0001001,77的二进制形式向右移了两位)。
其实,说白了,m<<n就是m*(2的n次方),m>>n就是m/(2的n次方),当然,这里的m,n都是整型变量。另外,这两个运算符能够节省时间,在程序优化中这一种方法是十分重要的,例如a*9可用(a<<3)+a代替(注意,"+"运算比"<<"运算优先)。
二,算术与&,算术或|,算术非~,算术异或^:这些是非常重要的二进制运算符,还是举例子吧:
25(二进制为00011001)&19(二进制为00010011)=17(二进制为00010001),&运算符就是把两个整型的二进制形式逐位比较,只有两个数某一位都是1,结果的该位才是1,其它的都是0,也就是有0是0,无0是1
25(二进制形式为00011001) | 19(二进制形式为00010011) = 27(二进制形式为00011011),| 运算符就是把两个整型的二进制形式逐位比较,只有两个数某一位都是0,结果的该位才是0,其它的都是1,也就是有1是1,无1是0
~ 19(二进制形式为00010011) = -20(二进制形式为10010100),额(⊙﹏⊙),这个看半天没看懂,反正就是对于一个十进制数n, ~n=-n-1
25 (二进制形式为00011001) ^ 19(二进制形式为00010011) = 10(00001010),也就是相同为 0,不同为1
三,一些运算符的先后顺序(由高到低):
1. ()(小括号) [ ](数组下标) .(类的成员) ->(指向的类的成员)
2. !(逻辑非) .(位取反) -(负号) ++(自增) --(自减) &(取址)
3. *(指针) sizeof(长度计算)
4. *(乘) /(除) %(取模)
5. +(加) -(减)
6. <<(位左移) >> (位右移)
7. < (小于) <= (小于等于) > (大于) >= (大于等于)
8. == (等于) != (不等于)
9. & (算术与)
10. ^ (算术异或)
11. | (算术或)
12. && (逻辑与)
13. || (逻辑或)
14. ? :
15. = += -=