C++程序设计与案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.14 位运算符

C++继承了C语言中对数据按二进制位进行操作的特点。在C++中提供了6个位运算符,可以对整数进行位操作。

(1)按位与(&)

按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作,结合性是从左向右。如果被“与”的两位都是1,按位与的结果为1,否则结果为0。

例如,计算5&9,结果为1。

(2)按位或(|)

按位或操作的作用是将两个操作数对应的每一位分别进行逻辑或操作,结合性是从左向右。如果被“或”的两位都是0,按位或的结果为0,否则结果为1。

例如,计算5|9,结果为13。

(3)按位异或(^)

按位异或操作的作用是将两个操作数对应的每一位分别进行逻辑异或操作,结合性是从左向右。如果被“异或”的两位值不同,按位异或的结果为1,否则结果为0。

例如,计算5^9,结果为12。

(4)按位取反(~)

按位取反是一元运算符,结合性是从右向左,作用是将一个二进制数的每一位取反。

例如,计算~7,结果为248。

(5)移位

C++提供了两个移位运算符——左移运算(<<)和右移运算(>>),二者都是二元运算符,结合性是从左向右。移位运算符左边的操作数是需要移位的数值,右边的操作数是左移或右移的位数。

左移是按照指定的位数将一个数的二进制值向左移位,左移后低位补0,移出的高位舍弃。例如:00001100<<3的结果是01100000。

右移是按照指定的位数将一个数的二进制值向右移位,右移后,移出的低位舍弃;如果右移的是无符号数则高位补0,如果是有符号数则高位补符号位或补0。不同的系统处理方法可能不同,Visual C++ 6.0采用的是补符号位的方法。例如:Visual C++ 6.0系统环境下,10100000>>3的结果是11110100。