逻辑运算和位运算

                                       逻辑运算(布尔运算)

逻辑运算符逻辑功能示例
&(与)有false则false (如果在多个表达式中有条件返回false,剩余的条件也要判断)false & true = false
|(或)有true则true (如果在多个表达式中有条件返回true,剩余的条件也要判断)false | true = true
&&(短路与)有false则false (若&&左边表达式或者值为false则右边不进行计算)false && true = false
||(短路或)有true则true (若||左边表达式或者值为true则右边不进行计算)false || true = true
!(非)非false则true,非true则false! false = true
^(异或)相同为false,不同为true  true & false =true

                                                位运算

       位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除 ~ 以外,其余均为二元运算符。操作数只能为整型和字符型数据

参考链接:https://blog.csdn.net/Marccco/article/details/88709481

位运算符功能示例
按位与运算符(&)两位同时为“1”,结果才为“1”,否则为01 & 1= 1, 0 & 0 = 0
按位或运算符(|)参加运算的两个对象只要有一个为1,其值为11 & 0 =1
异或运算符(^)参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为01 ^ 0 = 1
取反运算符(~)对一个二进制数按位取反,即将0变1,1变0~ 0 = 1, ~ 1 = 0
左移运算符(<<)将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)1 << 2 = 4
右移运算符(>>)一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃4 >> 2= 1

         


& , |  , ^  既可以当做逻辑运算符,还可以用作位运算符,当操作符两边的表达式不是boolean类型时,&表示按位与操作.(位运算符).


异或运算符(^)的一些常见用法

①:交换两个数

int a=10,b=5;
a^=b;
b^= a;
a^= b;
//  a=a^b;

  最后输出 a=5, b=10;

//第一次运算
a=10      -->    00001010
b=5       -->    00000101
a=a^b     -->    00001111 = 15
a=15

//第二次运算
a=15      -->    00001111
b=5       -->    00000101
b=a^b     -->    00001010 = 10
b=10

//第三次运算
a=15      -->    00001111
b=10      -->    00001010
a=a^b     -->    00000101 = 5
a=5
 
           

②:翻转特定位,保留特定位

0异或任何数,其结果=任何数;1异或任何数,其结果=任何数取反;任何数异或自己,等于把自己置0

a = 11110000,我想把前4位翻转(即0变为1,1变为0),则只需a^11110000异或运算,a就会变为00000000

a = 11110000,我想保留前4位不变,即a ^ 00000000,a不变


③:偶数+1,奇数-1

a=5,b=9;
a^=1;
b^=1;

最后输出 a=6, b=8;


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值