Java移位运算符详解实例

作者: imule 分类: Java知识 发布时间: 2023-02-09 15:23

java中有三种移位运算符

  • << : 左移运算符,x << 1,相当于x乘以21(不溢出的情况下),低位补0
  • >> : 带符号右移,x >> 1,相当于x除以21,正数高位补0,负数高位补1
  • >>> : 无符号右移,忽略符号位,空位都以0补齐

1.左移运算符

左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。

public class test{
    public static void main(String[] args) {
        int a=2,b=2,c;
        c=a<<b;
        System.out.print("a 移位的结果是"+c);
    }
}

输出结果:

8

分析上面代码:

2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8

2.带符号的右移运算符

带符号右移运算符用“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1

public class test{
    public static void main(String[] args) {
        int a=16;
        int c=-16;
        int b=2;
        int d=2;
        System.out.println("a 的移位结果:"+(a>>b));
        System.out.println("c 的移位结果:"+(c>>d));
    }
}

输出结果:

4和-4

分析上面代码:

a 的值是16转换成二进制是00010000,让它右移两位成00000100 ,其实就是除以2 的2 次方,即4,c 的值是-16转换成二进制是11101111,让它右移一位成11111011,其实就是除以2 的2 次方,即-4

3.无符号右移运算符

无符号右移运算符>>>
它的通用格式如下所示:
value >>> num
num 指定要移位值value 移动的位数。
无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位
无符号右移运算符>>> 只是对32位和64位的值有意义

寄语

    有人在奔跑,有人在睡觉,有人在感恩,有人在抱怨,有目标的睡不着,没目标的睡不醒,努力才是人生应有的态度,睁开眼就是新的开始。

本站文章主要用于个人学习记录,可能对您有所帮助,仅供参考!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!