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

来源:互联网 发布:gta5精简优化版 编辑:程序博客网 时间:2024/06/06 01:25

总结一下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 =,+=,-=,*=,/=,%=,&=,|=,^=,~=,<<=,>>=,>>>= 从右到左
1 0
原创粉丝点击