关于 |= 运算符:|= 运算符和 += 这一类的运算符一样,拆解开就是 a = a | b

int a = 5; // 0000 0101

int b = 3; // 0000 0011

a |= b; // 0000 00111

具体规则为:两个二进制对应位为0时该位为0,否则为1。拿5的二进制 0000 0101 和 3的二进制 0000 0011 进行|运算,后三位的的对应位都不是同时等于0,所以最终结果为 0000 0111 也就是7的二进制。

————————————————————————————————————————————————————————————————————————————————————————————————————————————

其他两个(&=,^=)运算规则跟|=是一样的,

&=:两个二进制的对应位都为1时,结果为1,否则结果等于0;

int a = 5; // 0000 0101

int b = 3; // 0000 0011

a &= b; // 0000 0001

两个二进制对应位都为1时,结果为1,否则结果为都0。拿5的二进制 0000 0101 和 3的二进制 0000 0011 进行&运算,只有最后一位都为1,则最终结果为 0000 0001 也就是1的二进制。

———————————————————————————————————————————————————————————————————————————————————————————————————

^=:两个二进制的对应位相同,结果为0,否则结果为1。

int a = 5; // 0000 0101

int b = 3; // 0000 0011

a ^= b; // 0000 0110

两个二进制对应位相同时,结果为0,否则结果为1。拿5的二进制 0000 0101 和 3的二进制 0000 0011 进行^运算,1-5位对应位都是0所以1-5位都为0,第8位都为1所以第8位也为0,其他的对应位都不相等所以为1,则最终结果为 0000 0110 也就是6的二进制。

原文:https://www.cnblogs.com/baxianhua/p/12165626.html

最新文章

  1. C++中的容器(STL容器)container
  2. 基于SSM实现绿色有机产品直营网
  3. vue通信方法EventBus的实现
  4. [学习笔记] ES6的数组遍历方式 for, forEach,for...in, for...of
  5. 去掉windows console application的dos显示
  6. windows或Ubuntu中请求github.com请求超时,或在下载GitHub文件出现:<urlopen error [Errno 110] Connection timed out>
  7. java window linux_java环境变量配置(Windows Linux)
  8. centos安装mysql步骤,CentOS安装mysql超详细步骤
  9. Git 回滚动任意版本
  10. 小程序员的大梦想 与盖茨像哥们儿
  11. TCP三次握手和四次挥手过程
  12. MySQL视图的应用
  13. [Ubuntu] 查看内核和版本号
  14. matlab画2fsk频谱,2fsk信号调制解调频谱的matlab仿真
  15. Head First 设计模式 —— 工厂模式与工厂方法
  16. 关于数据挖掘(协同过滤、关联推荐、聚类分类)一些资料(转)
  17. Java连接数据库并实现添加数据有重复不插入数据
  18. 实时取色器(RGB)
  19. 烧烤摊如何走O2O之路 微博微信运营案例分享
  20. java 特立独行的幸福

热门文章

  1. gif 格式 完整 检查_GIF的完整格式是什么?
  2. 如何在Java中使ArrayList只读?
  3. c# 用空格分割字符串_C#| 左用空格填充字符串
  4. Java Currency getInstance()方法与示例
  5. Java StringBuilder length()方法与示例
  6. 第 3-2 课:集合详解(下) + 面试题
  7. pomelo获取客户端IP
  8. Kafka集群部署搭建完美标准版
  9. tinyxml c语言,开源TinyXML 最简单的新手教程
  10. 如何在linux下启动和关闭oracle服务