栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java位操作符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java位操作符

位操作符是用来对数据进行二进制运算时用到的操作符号,并且是二进制按位对应操作。

1.&  与操作符

c = a&b,只有当a和b都是1的时候,c才等于1,只要a和b其中有一个为0,c都等于0,为什么是这么算的呢?计算机是通过二进制来进行数据操作的,这种与操作脱胎于与门电路,如下图

从与门逻辑电路来看,只有两条输入的线路都是接通的,输入都是1,出来的线路才是通的,输出才是1。这也是为什么只有当a和b都是1,结果才是1。如果c = 5 & 1; 先将5转成二进制数101,101与1进行与操作,将1前面补0,补成001,这样将两个二进制树按位与,结果为001,也就是c=0。

2.|  或操作符

c = a | b;只要a和b有一个为1,结果为1,a和b都是0,c结果为零

从或门逻辑电路来看,只要两条输入的线路有一条接通的,输入都是1,出来的线路都是通的,输出是1,只有两个输入都是0,输出才为0。这也是为什么只有当a和b都是0,结果才是0。如果c = 5 | 1; 先将5转成二进制数101,101与1进行或操作,将1前面补0,补成001,这样将两个二进制树按位与,结果为101,也就是c=5。

 3. ^  异或操作(相同为0,相异为1)

c = a^b, 只有a和b不相同的时候,结果才为1,a和b相同时,结果为1;

 从异或门逻辑电路来看,只要两条输入的线路状态不同,输入才是1,输出是1,如果两个输入都是1,输出也是0。如果c = 5 ^ 3; 先将5转成二进制数101,101与1进行或操作,将3前面补0,补成011,这样将两个二进制树按位与,结果为110,也就是c=6。

如面试常问的交换a= 5;b = 3;不借助中间变量:

a = a^b;  // 101^011 = 110  ;十进制是6;

b = a^b;   //此时a = 6,  110^011 = 101; 十进制是5;

a = a^b;  //此时=a = 6; b = 5;110^101 = 011; 十进制是3;

这样就完成两个数的交换。

4.& 、| 、^位操作符与=号联用,&=,|=,^=。

c &= a; //等价c = c & a;

c &= a & b;//等价c = c & (a & b)

c |= a; //等价c = c | a;

c |= a | b;//等价c = c | (a | b)

c ^= a; //等价c = c ^ a;

c ^= a ^ b;//等价c = c ^ (a ^ b)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号