java中的">>"是什么意思

Bad*_*Dub 17 java

我看到一些我正在看的代码中的一行,它说(12 >> 1) - 1).我将该值打印出来并以5的形式出现.如果我将12更改为5,则表示为1.什么是">>"符号?谢谢

Kar*_*tic 22

>>签署了右移运营商.它将位模式向右移动.位模式由左侧操作数给出,位置数由右侧操作数移位.

向右移2位时,丢弃2位.

可以说, x = 00111011

所以当你这样做时x >> 2,就会产生结果x = 00001110

这与将值除以4或2两次基本相同.

因此,下面的代码将导致 4

byte val = 100;
val = (byte) (val >> 2);
System.out.println(val);
Run Code Online (Sandbox Code Playgroud)

解释你的例子:

  • 12的二进制表示是:1100
  • 12 >> 1相当于0110,即十进制的6
  • 所以(12 >> 1) - 1)相当于6-1即5

  • 也许你的意思是结果将是 25?100 / 4 != 4;) (3认同)

CSC*_*SCH 18

12是1100二进制的.右移((>>是按位右移运算符)一位产生

1100 -> 0110 
Run Code Online (Sandbox Code Playgroud)

这是6.

因此,我们有,

6 - 1 = 5
Run Code Online (Sandbox Code Playgroud)