总结一下java中的位操作,运算优先级

总结一下java中的位操作

java中有很多位操作,如移位,异或,与或非等。

  • 移位

    • 向左移,二进制的结尾就直接用0来补全了
    //左移两位
    m = -81;
    m = m << 2;
    System.out.println("m:(0b)"+Integer.toBinaryString(m)+"左移两位<<");
    • 向右移,有两种情况
    • 开头以符号位补全(负数就是用1补全)
    //右移两位,前面用符号位补位
    m = -81;
    m = m >> 2;
    System.out.println("m:(0b)"+Integer.toBinaryString(m)+"右移两位>>");
    • 开头以0补全
    //右移两位,前面用0补位
    m = -81;
    m = m >>> 2;
    System.out.println("m:(0b)"+Integer.toBinaryString(m)+"右移两位>>>");
//按位与操作
m = -81;
n = 1;
temp = m & n;
System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"与&");
//按位或操作
m = -81;
n = 1;
temp = m | n;
System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"或|");
//按位非
m = -81;
n = 1;
temp = ~n;
System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"非~");
  • 异或
//异或操作
m = -81;
n = 1;
temp = m ^ n;
System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"异或^");
  • 同或
    就是异或的取反。

整体代码

public static void main(String[] args){
        int m = -81;
        int n = 1;
        int temp;
        System.out.println("m:(0b)"+Integer.toBinaryString(m));
        System.out.println("n:(0b)"+Integer.toBinaryString(n));
        //左移两位
        m = -81;
        m = m << 2;
        System.out.println("m:(0b)"+Integer.toBinaryString(m)+"左移两位<<");
        //右移两位,前面用符号位补位
        m = -81;
        m = m >> 2;
        System.out.println("m:(0b)"+Integer.toBinaryString(m)+"右移两位>>");
        //右移两位,前面用0补位
        m = -81;
        m = m >>> 2;
        System.out.println("m:(0b)"+Integer.toBinaryString(m)+"右移两位>>>");
        //异或操作
        m = -81;
        n = 1;
        temp = m ^ n;
        System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"异或^");
        //按位与操作
        m = -81;
        n = 1;
        temp = m & n;
        System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"与&");
        //按位或操作
        m = -81;
        n = 1;
        temp = m | n;
        System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"或|");
        //按位非
        m = -81;
        n = 1;
        temp = ~n;
        System.out.println("temp:(0b)"+Integer.toBinaryString(temp)+"非~");
    }

附表:运算符优先级

优先级运算符结合性
1(),[],.从左到右
2!,+(正号),-(负号),~,++,–从右到左
3+,/,%从左到右
4+(加号),-(减号)从左到右
5<<,>>,>>>从左到右
6<,<=,>,>=,instanceof从左到右
7==,!=从左到右
8&(按位与)从左到右
9^(按位异或)从左到右
10|(按位或)从左到右
11||从左到右
12&&从左到右
13?:从右到左
14=,+=,-=,*=,/=,%=,&=,|=,^=,~=,<<=,>>=,>>>=从右到左
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值