逻辑与(&&)、逻辑或(||)、按位与(&)、按位或(|)、按位异或(^)、按位取反(~)

逻辑与(&&)、逻辑或(||)、按位与(&)、按位或(|)、按位异或(^)、按位取反(~)按位与计算方法:转换为二进制后,不够的位数补齐,然后通过0为false1为true的规则,对每一位之间进行与的运算(只有true+true才为true),最后再将数转回十进制。按位或计算方法:转换为二进制后,不够的位数补齐,然后通过0为false1为true的规则,对每一位之间进行或的运算(只有false+false才为false),最后再将数转回十进制。异或运算这是一种可以不用加号…

大家好,又见面了,我是你们的朋友全栈君。

逻辑与(&&)

运算符两边的表达式的值都为true运算结果为true, 其余情况为false。

逻辑或(||)

运算符两边的表达式的值都为false运算结果为false, 其余情况为true。

按位与(&)

计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行与运算。只有当 相应位上全部为1时取1, 存在0时为0。

011 & 110

011
110
---
010

按位或(|)

计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行或运算。只要当 相应位上存在1时取1, 全部为0时为0。

011 | 110

011
110
---
111

按位同或(⊙)

计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行异或运算。只有当 相应位上的数字相同时取1, 不相同为0。

011 ⊙ 110

011
110
---
010

按位异或(^)

计算方法:
参加运算的两个数,换算为二进制(0、1)后,进行异或运算。只有当 相应位上的数字不相同时取1, 相同为0。

011 ^ 110

011
110
---
101

按位取反(~)

计算方法:
参加运算的两个数,换算为二进制(0、1)后, 0变1, 1变0。
~(010) = 101

优先级

not>and>xor>or

位运算详解


2019.7.30学习线性基更新

一些位运算中的简便运算

  • x & 1 是奇数返回1,是偶数返回零,可以放在if中判断奇偶
  • x |= 1<<j 等价于 x += pow(2,j);
  • x<<2 x<<1 在十进制中表现的是乘上2的多少次方,在二进制中,就是先将这个x转换为二进制,然后整个数往前移位。(最后转化回去还是一样的)
  • 状态压缩dp过程中用零一模拟Y or N的时候数1或零的个数
while (tem) { 
   
 	tem &= (tem-1);
   	cnt++;
}

XOR

就是^运算
注意运算顺序

typedef long long ll;

cout<<1^2<<endl;   			//报错
cout<<(1^2)<<endl;			//输出3

int a = 1^2<5;
int b = (1^2)<5;
cout<<a<<" "<<b<<endl;   	//输出0 1

int c = 1ll<<3;
cout<<c<<endl; 				//输出8 ll防止在往前移位的时候爆掉int

异或运算的性质

x ^ x = 0
任何数 ^ 0 = 任何数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134869.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为什么要进行数据库分区

    为什么要进行数据库分区此文从以下几个方面来整理关于分区表的概念及操作:        1.表空间及分区表的概念        2.表分区的具体作用        3.表分区的优缺点        4.表分区的几种类型及操作方法        5.对表分区的维护性操作. (1.)表空间及分区表的概念 表空间:   是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是…

    2022年5月6日
  • Java基础知识总结(超详细整理),java从入门到精通pdf「建议收藏」

    Java基础知识总结(超详细整理),java从入门到精通pdf「建议收藏」数组数组是数据的集合,一个容器,用来存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据。数组声明的三种方式:数据类型[]数组名=new数据类型[长度];数据类型[]数组名={数据,数据,…,数据};数据类型[]数组名=new数据类型长度[]{数据,数据,…,数据};一维数组:数组变量的声明:语法:数据类型[]数组名;,如:int[]num;、double[]d;、String[].

    2022年7月7日
  • pychram激活码 3月最新注册码「建议收藏」

    pychram激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
  • LNMP状态管理命令

    LNMP状态管理命令

    2021年10月8日
  • 服务器异地灾备_华为idc解决方案

    服务器异地灾备_华为idc解决方案说明两地三中心:两地是指同城、异地三中心是指生产中心、同城容灾中心、异地容灾中心。备端在线两地三中心灾备方案网络设计如下:容灾系统衡量指标衡量容灾系统的主要指标有RPO(RecoveryPointObject):灾难发生时允许丢失的数据量RTO(RecoveryTimeObjective):系统恢复的时间容灾半径:生产系统和容灾系统之间的距离ROI(R…

    2022年4月20日
  • Google浏览器清除缓存怎么弄_谷歌浏览器f12清理缓存

    Google浏览器清除缓存怎么弄_谷歌浏览器f12清理缓存google浏览器设置不缓存的方法摘要:我们在做web开发的时候特别是在调试js时,会经常使用的google浏览器,这个时候就要我们修改过的代码可能不能生效。这是因为我们的浏览器默认是有缓存的,但是

    2022年8月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号