C++中的位运算主要包括以下几种:
按位与:
功能:对两个整数的二进制表示进行逐位与操作,只有当两个相应的位都为1时,结果的位才为1。示例:5 & 3,即0101 & 0011,结果为0001,即1。
按位或:
功能:对两个整数的二进制表示进行逐位或操作,只要有一个相应的位为1,结果的位就为1。示例:5 | 3,即0101 | 0011,结果为0111,即7。
按位异或:
功能:对两个整数的二进制表示进行逐位异或操作,当两个相应的位不同时,结果的位为1;相同时,结果的位为0。示例:5 ^ 3,即0101 ^ 0011,结果为0110,即6。
按位取反:
功能:对一个整数的二进制表示进行逐位取反操作,0变为1,1变为0。示例:~5,即~0101,结果为6。
左移:
功能:将一个整数的二进制表示向左移动指定的位数,右边空出的位用0填充。每左移1位相当于数值乘以2。示例:5 << 2,即0101 << 2,结果为10100,即20。
右移:
功能:将一个整数的二进制表示向右移动指定的位数,对于无符号整数,左边空出的位用0填充;对于有符号整数,左端填充0或1取决于系统设置。每右移1位相当于数值除以2。示例:5 >> 2,即0101 >> 2,结果为0001,即1。
注意:位运算符的优先级从高到低为:~ > & > ^ > |。移位运算符<<和>>的优先级低于上述四种位运算符,但高于算术运算符和比较运算符。在进行复杂的位运算时,建议使用括号明确运算顺序。