C++中的按位与&、按位与或|、按位异或^运算符详解
按位与运算符:&
语法
expression & expression
备注
表达式可以是其他“与”表达式,或(遵循下面所述的类型限制)相等表达式、关系表达式、加法表达式、乘法表达式、指向成员的指针表达式、强制转换表达式、一元表达式、后缀表达式或主表达式。
按位“与”运算符(&)会将第一操作数的每一位与第二操作数的相应位进行比较。如果两个位均为1,则对应的结果位将设置为1。否则,将对应的结果位设置为0。
按位“与”运算符的两个操作数必须为整型。算术转换中所述的常用算术转换将应用于操作数。
&的运算符关键字
bitand运算符是&的文本等效项。访问程序中的bitand运算符的方式有两种:包括头文件iso646.h,或使用/Za(禁用语言扩展)编译器选项进行编译。
//expre_Bitwise_AND_Operator.cpp //compilewith:/EHsc //DemonstratebitwiseAND #include<iostream> usingnamespacestd; intmain(){ unsignedshorta=0xFFFF;//pattern1111... unsignedshortb=0xAAAA;//pattern1010... cout<<hex<<(a&b)<<endl;//prints"aaaa",pattern1010... }
按位与或运算符:|
语法
expression | expression
备注
按位“与或”运算符(|)将第一个操作数的每个位与第二个操作数的对应位进行比较。如果其中一个位是1,则将对应的结果位设置为1。否则,将对应的结果位设置为0。
按位“与或”运算符的两个操作数必须为整型。算术转换中涵盖的常用算术转换适用于操作数。
|的运算符关键字
bitor运算符是|的文本等效项。访问程序中的bitor运算符有两种方式:包括头文件iso646.h,或使用/Za(禁用语言扩展)编译器选项进行编译。
//expre_Bitwise_Inclusive_OR_Operator.cpp //compilewith:/EHsc //DemonstratebitwiseinclusiveOR #include<iostream> usingnamespacestd; intmain(){ unsignedshorta=0x5555;//pattern0101... unsignedshortb=0xAAAA;//pattern1010... cout<<hex<<(a|b)<<endl;//prints"ffff"pattern1111... }
按位异或运算符:^
语法
expression^expression