移位操作符

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。