逻辑运算 与原反补码

&&:从左往右出现错误则后面都不执行  也就是  第一个错则错

||  :没有判断到对的就一直执行直到有true          第一个对则对

首先要知道逻辑运算的是补码 ,而原反补的出现是为了减化运算 

& 位与  

与运算,两者都为真计算结果为真,反之为假: 都为1 则为1 ,有0则 0   (有一方不是1则为0)

| 位或 


或运算,至少其一都为真计算结果为真,反之为假:有1就是1 都是0则为 0


^ 异或 

异或运算,两者不同为真,反之为假:不一样就是1 ,一样为0  (  有0有1为1  )


~位非  取反

包括运算符在内 0变1  1变0 

运用1:a^a=0    异或自己 显然都是一样的  所以为0

            a^0=a    异或0 不一样的是1 所以等于本身

运用2:看奇偶

           a&1      0000 0001  与 都是1才是1  前面一定是0 那最后一位奇数1  &1  为1  最终得到 1   偶数 为0

            


// System.out.println(-2&4);  //都是1则1 
/*-2  1000 0010
*    1111 1101    -2的反码
*    1111 1110     -2的补码
* 4  0000 0100      
*    0000 0100  补        是正数 补=原  ---------4 
* */
// System.out.println(-2&-4);
/*
-2    1000 0010
     1111 1101
     1111 1110
-4    1000 0100
     1111 1011
     1111 1100
     
     1111 1110
     1111 1100
     1111 1100 补 
     1111 1011
     1000 0100  -----   -4
*/
// System.out.println(-2|-4); //有1就是1
/*1111 1110
*1111 1100
*1111 1110   补
*1111 1101
*1000 0010  ---   -2
* */
// System.out.println(-2^-4); //不一样就是1
/*1111 1110
*1111 1100
*0000 0010  --- 2
* */

System.out.println(~-4);//包括符号位取反 
/*1000 0100
*1111 1011
*1111 1100
*0000 0011   --- 3

* */



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值