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

本文详细介绍了位运算符的使用方法,包括位左移(<<)和位右移(>>)运算符的功能及应用场景,以及算术与(&)、算术或(|)、算术非(~)和算术异或(^)等二进制运算符的操作原理。此外,还列举了常见的运算符优先级顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值