美文网首页
移位操作符

移位操作符

作者: PuHJ | 来源:发表于2018-01-19 10:39 被阅读13次

    1、介绍

    移位操作符只可处理整数类型。

    • << : 左移位操作符(i<<2),顾名思义,即在将整个字节向左移动n位(自己定义的),字节的低位则会补上n位0.
    • :>> : 右移位操作符(i>>2),分两种情况,一种是正数,一种是负数。有符号的字节,第一位表示正负,0代表正数,1代表负数
      正数:高位插入n个0,
      负数:高位插入n个1;
    • :>>>: 无符号的右移(i>>>2),无论正负,都将在高位插0
      小结:左移位相当于*2的n次方,右移相当于/的n次方2。

    2、举例

    public static void main(String[] args) {
        int i = -1;
        System.out.println(Integer.toBinaryString(i));
        i>>>=10;
        System.out.println(Integer.toBinaryString(i));
        i = 15;
        System.out.println(Integer.toBinaryString(i));
        i>>=1;
        System.out.println(Integer.toBinaryString(i));
    }
    

    打印结果如下:

    11111111111111111111111111111111
    1111111111111111111111
    1111
    111
    

    说明:

    Java中使用32bit保存Integer型,64bit保存Long型。对于int型的15,则会省略前面的0,所以打印1111;

    3、byte和short类型

    • byte :8bit,只占一字节
    • short : 16bit,只占两字节
      特别说明:对于byte和short类型进行移位时候,会自动将byte和short装换成32bit,再移位。移位完成后会将截断成对应的位数,赋值给原来的类型
    public static void main(String[] args) {
         byte i = -1;
          System.out.println(Integer.toBinaryString(i));
          i>>>=10;
          System.out.println(Integer.toBinaryString(i));
          i = -1;
          System.out.println(Integer.toBinaryString(i));
          System.out.println(Integer.toBinaryString(i>>>10));
    }
    
    ####结果如下:
    11111111111111111111111111111111
    11111111111111111111111111111111
    11111111111111111111111111111111
    1111111111111111111111
    

    相关文章

      网友评论

          本文标题:移位操作符

          本文链接:https://www.haomeiwen.com/subject/eykooxtx.html