移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。

运算符 含义 例子
<< 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) x<<3
>> "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. x>>3
>>> "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. x>>>3

1, 看图之前,应该先了解int数据类型 为32位,那么2039转成功二进制之后的排列才能看懂。

2,低位补充,不论是正是负低位都是统一的补0。

位运算符(移位运算符)

以int类型的6297为例,代码如下:

[java] view plaincopy

  1. System.out.println(Integer.toBinaryString(6297));   
  2. System.out.println(Integer.toBinaryString(-6297));   
  3. System.out.println(Integer.toBinaryString(6297>>5));   
  4. System.out.println(Integer.toBinaryString(-6297>>5));   
  5. System.out.println(Integer.toBinaryString(6297>>>5));   
  6. System.out.println(Integer.toBinaryString(-6297>>>5));   
  7. System.out.println(Integer.toBinaryString(6297<<5));   
  8. System.out.println(Integer.toBinaryString(-6297<<5));  

 

  运行结果:

1100010011001
11111111111111111110011101100111
11000100
11111111111111111111111100111011
11000100
111111111111111111100111011
110001001100100000
11111111111111001110110011100000

注:x<<y 相当于 x*2y ;x>>y相当于x/2y
    从计算速度上讲,移位运算要比算术运算快。
    如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。

 

相关文章:

  • 2021-11-24
  • 2021-06-13
  • 2022-12-23
  • 2021-11-20
  • 2021-05-15
  • 2022-01-13
  • 2021-11-27
猜你喜欢
  • 2022-01-01
  • 2021-05-24
  • 2022-12-23
相关资源
相似解决方案