位运算

一、关键点

作用对象:整型(如果运算对象是“小整型”,则它的值会被自动提升成较大的整数类型),把运算对象看成是二进制位的集合

功能:检查和设置二进制位

如果运算对象是带符号的且它的值为负,则位运算符如何处理运算对象的“符号位”依赖于机器,故我们推荐使用位运算符处理无符号类型。

 

二、示例

1. 用于数组的维度

	int a[1<<2];		//等价于int a[100]; 

2. 设置和检查二进制位

	unsigned int a = 0;				//32个二进制位,每位都是0
	a = a | 1u << 3;				//设置第3位为1,1u为一个unsigned类型的整数字面值 
	cout << a << endl; 				//输出8
	1u << 3;		//该整数只有第3位是1,其他位都是0
	~(1u << 3);		//该整数只有第3位是0,其他位都是1 

 

三、移位运算符的优先级和结合律

  尽管很多程序员从未直接使用过位运算符,但几乎所有人都用过它们的重载版本来进行IO操作。

  重载运算符的优先级和结合律都与它的内置版本一样。

1. 移位运算符满足左结合律

2. 移位运算符的优先级不高不低:比算术运算符低,高于关系/赋值/条件运算符

 

posted @ 2017-10-12 10:12  GGBeng  阅读(224)  评论(0编辑  收藏  举报