一、按位逻辑运算符

1,按位取反~

如:~(10)结果位(01)

~var不会改变var的值,如果要改var值,可以为var=~var;

2,按位与&

有0得0,全1出1

var&=300等价于var=var&300

3,按位或|

有1出1,全0出0

var|=300等价于var=var|300

4,按位异或^

两者相等为0,不等为1

二、位逻辑运算符运用

1,用法:掩码(&)

按位与运算符常用于掩码(mask),可以获取某个位的状态

2,用法:打开位(设置位) (|)

有时必须打开其中某一位,其它位不变,这种情况可以采用按位或运算符

原理:因为使用|运算符,任何与0组合,结果都为本身;任何与1组合,结果都为1

例如:想把0xFE第0位置为1

则:0xFE|1=0xFF

3,用法:关闭位(清空位)(&、~)

有时必须关闭其中某一位,其它位不变,这种情况可以采用按位取反再与

原理:flags=flags&~Mask,Mask只要第一号位为1,其它都为0,所以,~Mask除1号为0,其它都为1

4,用法:切换位(^)

切换位是指改变原来的状态,开变为关,关变为开

原理:假设b为一个位,若b==1,则b^1=0;若b==0,则b^1=1

另外,无论b为0或者1,0^b均为b

所以,flags=flags^Mask;          Mask位为1的切换,位为0的不变

5,用法:检查位

if((flags&Mask)==Mask)

{

TRACE(L"n位为1");

}

由于按位运算符的优先级比==低,所以必须加括号

为了避免信息漏过边界,掩码至少要与其覆盖的值宽度相同。

三、移位运算符

1,左移<<

(10001010)<<2//表达式

(00101000)      //结果值

假设value为1,那么value<<2为4,但是value本身不变,仍为1

使用<<=来更改变量的值

value<<=2;//把value值改为4

2,右移>>

有符号类型右移结果取决于机器,这里以无符号为例子

(10001010)>>2//表达式

(00100010)      //结果值

value>>=3;//右移后的结果赋值给value

3,移位运算符

number<<n;    //number乘以2的n次幂

number>>n;    //如果number为非负,则用number除以2的n次幂

这些移位运算符类似于十进制中移动小数点来乘以或除以10

运用:

#define BYTE_MASK 0xFF
unsigned long color = 0x002a162f;
unsigned char blue, green, red;
red = color&BYTE_MASK;
green = (color >> 8)&BYTE_MASK;
blue = (color >> 16)&BYTE_MASK;

概念:位字段?

C++位操作与、或、非、异或、取反详解相关推荐

  1. 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解

    位运算是指按二进制位进行的运算.在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断. C语言提供的位运算符有: 运算符 含义 功能 & 按位与 如果两个相应的二进制位都为1,则该位的结 ...

  2. JVM堆内存与非堆内存(heap)官方详解

    JVM堆内存与非堆内存(heap)官方详解 JAVA堆内存管理是影响性能主要因素之一. 堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的. 先看下JAV ...

  3. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  4. python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到 ...

  5. java静态变量重复new_Java非静态成员变量之死循环(详解)

    1.非静态成员变量 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 例子: public class ConstructorCls { private ConstructorCls ...

  6. win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解)

    这篇文章主要介绍了win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解),详细的介绍了Oracle 11g 安装的步骤,有兴趣的可以了解一下. 先去网上把下面列表里的文件下 ...

  7. html标签非成对,深入document.write()与HTML4.01的非成对标签的详解

    深入document.write()与HTML4.01的非成对标签的详解 (一)HTML4.01中的非成对标签: 注释标签: 严格来讲不算HTML标签的:文档声明标签 设置页面元信息的:标签 设置网页 ...

  8. Python爬虫包 BeautifulSoup 递归抓取实例详解

    Python爬虫包 BeautifulSoup 递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另 ...

  9. Python 关于浮点数取整详解

    Python 关于浮点数取整详解 文章目录 Python 关于浮点数取整详解 一.四舍五入 二.向下取整 三.向上取整 四.截取整数和小数部分 五.扩展:浮点数精度问题 相关博客

最新文章

  1. K-Means聚类算法进行压缩图片
  2. CentOS Linux解决Device eth0 does not seem to be present及设置固定ip
  3. mac 卸载 eclipse_Mac 新手准备工具集合
  4. 算法(18)-leetcode-剑指offer2
  5. sdut 数据结构实验之排序三:bucket sort
  6. 理解卷积神经网络的利器:9篇重要的深度学习论文(下)
  7. 马斯克谈买比特币:当法币实际利率为负时 只有“傻子”才不放眼他处
  8. 单源最短路径——Dijkstra代码实现
  9. BIND9源码分析奠基
  10. html中http502怎么解决,Http Error 502 解决方法
  11. 模指数运算之python实现
  12. L2-016 愿天下有情人都是失散多年的兄妹
  13. 企业局域网即时通讯软件存在是必然趋势
  14. Image Retrieval using Scene Graphs ——基于场景图的图像检索 读书笔记
  15. 电脑重装系统简单小白教程
  16. windwos操作系统有snmp服务器,windows服务器snmp v3
  17. JavaScript-84:利用函数求任意两个数的和
  18. Ubuntu开启wifi热点
  19. VMWare虚拟机找不到eht0解决办法
  20. 超级计算器 - 网易出品的数学好助手

热门文章

  1. js把string转化为json
  2. cv2.contourArea函数详解
  3. Canvas入门篇(一)
  4. PB级大规模Elasticsearch集群运维与调优实践
  5. Matlab代码 多时间尺度优化调度 MATLAB程序含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度
  6. java 阿里云接口实现发送短信验证码
  7. matlab模糊自适应pid控制仿真程序,模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)...
  8. cube escape语言设置_Cube Escape Harvey's Box攻略
  9. 我眼里的奇酷手机360OS
  10. CS61A Lab 11