Java基础 —— 位运算符详解

在Java中,我们通常会使用运算符进行计算,比如算数运算符 +、 -、 * 、/ ;也会用到数学函数,例如:Math.sqrt(5),Math.pow(3,2) 等。今天介绍的是 位运算符。

通常我们说的位运算符指的是以下几种:&("and")、|("or")、^("xor")、~("not");还有移位运算符,包括 :<<、>>、>>>三种。注意:这些运算符都是按位模式进行处理,并且都只能对整型数值进行运算。接下来将一一进行介绍。

1、&("and") 和 |("or")

&:只有当两个位都是1时,才能得到1;

|:当两个位中的一位是1时,就能得到1;

例如:

int a = 100;
int b = 101;
System.out.println((a&b) + "  " + (a|b)); // 100  101

上面为什么会得到 100 和 101的结果呢?如下图:

另外,当 & 和 | 应用在布尔值上时,将会得到一个布尔值。这与 && 和 || 运算符有点类似,不同的是 && 和 || 是采用“短路” 方式来求值,而位运算符不是。

boolean a = true;
boolean b = false;
System.out.println((a&b) + "  " + (a|b)); // false  true

 

2、^("xor") -- 异或运算符

当两个对应的位相同时得0,不同时才得1,所以按照上图二进制数,如果运算符是 ^ 时,得到的结果如下:

int a = 100;
int b = 101;
System.out.println((a^b)); // 1

3、~("not") -- 非运算符

非运算符可以理解为 按位取反。如下图:

4、<< 、 >> 和 >>>

注意:移位运算符需要完成模32位的运算(int为32,long为64)

<<:左移运算符,将模式位左移,低位补0;

>>:右移运算符,将模式为右移,有符号;

>>>:右移运算符,将模式位右移,无符号(高位补0);注意:没有 <<<;

移位运算符总结:

1、a>>n = a 除以 2的n次方;

2、a<<n = a 乘以 2的n次方;

3、a>>>n:

        当a为正整数时,= a>>n

        当a为负整数时,需要谨记最高位补0,int型是32位,long型是64位

 

以上为个人学习总结,如有问题欢迎留言讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值