C++中的按位与&、按位与或|、按位异或^运算符详解

 更新时间:2016年01月12日 17:10:10   投稿:goldensun  
这篇文章主要介绍了C++中的按位与&、按位与或|、按位异或^运算符,是C++入门学习中的基础知识,需要的朋友可以参考下

按位与运算符:&

语法

expression 
&
 expression

备注
表达式可以是其他“与”表达式,或(遵循下面所述的类型限制)相等表达式、关系表达式、加法表达式、乘法表达式、指向成员的指针表达式、强制转换表达式、一元表达式、后缀表达式或主表达式。
按位“与”运算符 (&) 会将第一操作数的每一位与第二操作数的相应位进行比较。如果两个位均为 1,则对应的结果位将设置为 1。否则,将对应的结果位设置为 0。
按位“与”运算符的两个操作数必须为整型。 算术转换中所述的常用算术转换将应用于操作数。
& 的运算符关键字
bitand 运算符是 & 的文本等效项。访问程序中的 bitand 运算符的方式有两种:包括头文件 iso646.h,或使用 /Za(禁用语言扩展)编译器选项进行编译。

// expre_Bitwise_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate bitwise AND
#include <iostream>
using namespace std;
int main() {
  unsigned short a = 0xFFFF;   // pattern 1111 ...
  unsigned short b = 0xAAAA;   // pattern 1010 ...

  cout << hex << ( a & b ) << endl;  // prints "aaaa", pattern 1010 ...
}

按位与或运算符:|

语法

expression 
|
 expression

备注
按位“与或”运算符 (|) 将第一个操作数的每个位与第二个操作数的对应位进行比较。如果其中一个位是 1,则将对应的结果位设置为 1。否则,将对应的结果位设置为 0。
按位“与或”运算符的两个操作数必须为整型。 算术转换中涵盖的常用算术转换适用于操作数。
| 的运算符关键字
bitor 运算符是|的文本等效项。访问程序中的 bitor 运算符有两种方式:包括头文件 iso646.h,或使用 /Za(禁用语言扩展)编译器选项进行编译。

// expre_Bitwise_Inclusive_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate bitwise inclusive OR
#include <iostream>
using namespace std;

int main() {
  unsigned short a = 0x5555;   // pattern 0101 ...
  unsigned short b = 0xAAAA;   // pattern 1010 ...

  cout << hex << ( a | b ) << endl;  // prints "ffff" pattern 1111 ...
}

按位异或运算符:^

语法

复制代码 代码如下:

expression ^ expression

备注
按位“异或”运算符 (^) 将第一操作数的每个位与第二操作数的相应位进行比较。如果一个位是 0,另一个位是 1,则相应的结果位将设置为 1。否则,将对应的结果位设置为 0。
按位“异或”运算符的两个操作数都必须为整型。 算术转换中涵盖的常用算术转换适用于操作数。
^ 的运算符关键字
xor 运算符是与 ^ 等效的文本。在您的程序中,可通过两种方法访问 xor 运算符:包含头文件 iso646.h,或使用 /Za(禁用语言扩展)编译器选项进行编译。
// expre_Bitwise_Exclusive_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate bitwise exclusive OR
#include <iostream>
using namespace std;
int main() {
  unsigned short a = 0x5555;   // pattern 0101 ...
  unsigned short b = 0xFFFF;   // pattern 1111 ...
  cout << hex << ( a ^ b ) << endl;  // prints "aaaa" pattern 1010 ...
}

相关文章

  • c++动态内存管理详解(new/delete)

    c++动态内存管理详解(new/delete)

    作为一名编程初学者,通常学习中,发生内存错误是件非常麻烦的事情,下面这篇文章主要给大家介绍了关于c++动态内存管理new/delete的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • C++详解哈夫曼树的概念与实现步骤

    C++详解哈夫曼树的概念与实现步骤

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近
    2022-04-04
  • MFC对话框实现梯形分页

    MFC对话框实现梯形分页

    这篇文章主要为大家详细介绍了MFC对话框实现梯形分页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C++第三方日志库Glog基本语法详解

    C++第三方日志库Glog基本语法详解

    这篇文章主要介绍了C++第三方日志库Glog基本语法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C语言中字符串常用函数strcat与strcpy的用法介绍

    C语言中字符串常用函数strcat与strcpy的用法介绍

    以下是对C语言中字符串常用函数strcat与strcpy的使用方法进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • 关于C++多重继承下虚表结构的问题

    关于C++多重继承下虚表结构的问题

    这篇文章主要介绍了C++ 多重继承下虚表结构的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • C/C++详解实现二层转发

    C/C++详解实现二层转发

    数据链路层是开放系统互连 (OSI) 模型中的第二层,该层用于通过 LAN 等单一网络进行通信的节点,第二层数据包不能从一个网络传输到另一个网络。而二层转发是根据报文的目的MAC直接进行转发,转发过程中不用对报文的头部做任何的修改
    2022-05-05
  • C++11生成随机数(random库)的使用

    C++11生成随机数(random库)的使用

    随机数在很多地方都可以用到,本文主要介绍了C++11生成随机数(random库)的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 数据结构与算法中二叉树子结构的详解

    数据结构与算法中二叉树子结构的详解

    这篇文章主要介绍了数据结构与算法中二叉树子结构的详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • Qt6.0+vs2019环境配置的实现教程

    Qt6.0+vs2019环境配置的实现教程

    这篇文章主要介绍了Qt6.0+vs2019环境配置的实现教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论