刚学了一些C++的书上没见过的符号,记录一下
2017-01-22 09:15
309 查看
一, <<和>>:就是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. = += -=
举两个例子,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. = += -=
相关文章推荐
- 从国外某著名DNN 知情人士 Nina's Blog上看到一些有用的文章,在此记录一下,也为国内DNN,问题搜索,出一点力
- 记录一下手机上的一些应用
- c语言的一些有用的库,记录一下。
- 记录一下fedora18安装后,需要安装的一些必备的软件包: 4000
- 有关C++ POD的一些问题记录
- 【C&C++】stringstream的一些用法 - 尝试一下新的东西
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
- centos 5.6下安装HP 5200打印机--查询的一些资料--没有成功只是记录一下发上来了
- 【东南大学】【仪器科学与工程学院】C++下第四次上机作业 单链表类模板 非书上版本 本人自创版本 部分参考书上 包含编程时一些该注意的事项
- 练手C++一些经验记录,持续更新中
- C++备忘录(记录一些不常使用的语法规则)
- 整理一下之前工作中记录过的一些东西——informix
- 整理一下之前工作中记录过的一些东西——shell
- 写博客是一件不容易的事情,记录一下最近移植CorsixTH的一些成果
- 整理一下之前工作中记录过的一些东西——sequence:在这里可以解释为"序列"
- 记录一下之后几天要做的一些事情。
- 整理一下之前工作中记录过的一些东西——SQL
- 整理一下之前工作中记录过的一些东西——车险理赔中的一些概念
- 记录一下近几年工作的一些心得
- 在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习