java中的运算运算符 与或非(转)




前两天看代码的时候看到了运算 ^、<<、>> ,因为之前很少用到所以一时间不知道怎么运算了 ,看了下资料,总结一下
1.首先先说说^(异或运算),先看代码

public static void main(String[] args) {
    System.out.println("2^3运算的结果是 :"+(2^3));
    //打印的结果是:   2^3运算的结果是 :1
}
 
 
  • 1
  • 2
  • 3
  • 4

那么这个1是怎么来的,我们要知道^、<<、>>等位运算符主要针对二进制,算异或的时候相同的为0,不同的为1
2转换成二进制是0010
3转换成二进制是0011
所以0010^0011的结果就是0001转换成十进制是1 ,所以2^3=1

2.<<向左位移,先看段代码

public static void main(String[] args) {
    System.out.println("2<<3运算的结果是 :"+(2<<3));
    //2<<3运算的结果是 :16
}
 
 
  • 1
  • 2
  • 3
  • 4

在运算的时候同样要把十进制转换成二进制, 2的二进制是0010 ,向左移3位后面用000不齐,结果是10000 二进制的10000转换成十进制是16(从右往左分别是1,2,4,8,16,32….)
3>>向右位移,代码如下

public static void main(String[] args) {
    System.out.println("2>>3运算的结果是 :"+(2>>3));
    //2>>3运算的结果是 :0
}
 
 
  • 1
  • 2
  • 3
  • 4

原理和左移是一样的,先转成二进制0010,再向右侧移动三位,向右侧移动的时候在左侧不齐0,移动几位不齐几位,移动后的二进制是0000 转成十进制就是0了。
4.&运算 按位“与”的计算是把两个数字分别写成二进制形式,然后按照每一位判断,&计算中,只要有一个是0就算成0
看下例子:System.out.println(1&2);打印0 , System.out.println(1&1);打印1
下面解释下原因
1的二进制为:0001
2的二进制为:0010
运算的结果为:0000 ->0
同理两个1的&运算的二进制结果为0001->结果为1



        </article>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值