Java位运算符以及运算优先级

1. Java中的位运算符

(1) 与&:

对运算符两侧以二进制表达的操作符按位分别进行'与'运算。

操作的规则是:仅当两个操作数都为1时。输出结果才为1。否则为0

例:12 & 5 = 1100 & 0101 = 0100 = 4

(2) 或|

对运算符两側以二进制表达的操作符按位分别进行'或'运算。

操作的规则是:仅当两个操作数都为0时,输出的结果才为0。

例:12 | 5 = 1100 | 0101 = 1101 = 13

(3) 异或^

对运算符两側以二进制表达的操作数按位分别进行'异或'运算。

异或运算操作的规则是:仅当两个操作数不同一时候。对应的输出结果才为1,否则为0

例:12 ^ 5 = 1100 ^ 0101 = 1001 = 9

(4) 取反~

'取反'运算符~的作用是将各位数字取反:全部的0置为1,1置为0

例:~12 = ~1100  = 0011 = 3  错

12 的二进制为 1100

进行取反操作为 10000000 00000000 00000000 00001101

则完整的运算式为 ~12 = -13

(5) 左移<<

左移就是把一个数的全部位数都向左移动若干位

例:12 << 1 = 1100 << 1 = 11000 = 24

(6) 右移>>

右移就是把一个数的全部位数都向右移动若干位

(7) 无符号右移>>>

无符号右移一位。不足的补0

 

2. Java运算符优先级

  • 单目: +(正数) , -(负数), ++, -- 等
  • 乘除: *, /, %, +, -
  • 位: <<, >>, >>>
  • 关系: >, >=, <, <=, ==, !=
  • 逻辑: &&, ||, &, |, ^
  • 三目: A > B ? X : Y
  • 最后复制: =

  运算符优先级口诀如下:单目乘除位关系,逻辑三目后赋值。

 

3. 测试代码

public class BitOperation {
   public static void main(String[] args) {
      System.out.println("&位运算符:12 & 5 = " + (12 & 5));
      System.out.println("|位运算符:12 | 5 = " + (12 | 5));
      System.out.println("^位运算符:12 ^ 5 = " + (12 ^ 5));
      System.out.println("~位运算符:~12 = " + (~12));
      System.out.println("<<位运算符:12 << 1 = " + (12 << 1));
      System.out.println(">>位运算符:12 >> 1 = " + (12 >> 5));
      System.out.println(">>>位运算符:12 >>> 1 = " + (12 >>> 5));

      int[] elements = {1,2,3,4,5,6,7};
      int newLength = elements.length * 3 >>> 1 + 1;
      System.out.println(newLength);
   }
}

测试结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值