刚学了一些C++的书上没见过的符号,记录一下

一, <<和>>:就是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. =    +=   -=

猜你喜欢

转载自blog.csdn.net/q1410136042/article/details/54666562