我在查看一些代码时看到一行代码,它说的是(12>>1)-1)。我打印出该值,它的值为5。如果我将12更改为5,则该值为1。
">>"符号到底是做什么的?
我在查看一些代码时看到一行代码,它说的是(12>>1)-1)。我打印出该值,它的值为5。如果我将12更改为5,则该值为1。
">>"符号到底是做什么的?
>>
是有符号右移位运算符。它将一个比特模式向右移动。左操作数给定比特模式,右操作数指定要移位的数量。
当向右移动两个比特时,会删除最低的两个比特。
假设,x = 00111011
那么当你执行 x >> 2
时,结果为 x = 00001110
这本质上与将值除以 4 或两次除以 2 并丢弃小数部分相同。
所以,下面的代码将得出 4
:
(7 >> 1) >> 1
```byte val = 100;
val = (byte) (val >> 2);
System.out.println(val);
解释您的例子:
12用二进制表示为1100
。将其右移一位(>>是按位右移操作符)得到
1100 -> 0110
最终结果是6。
因此,我们得到:
6 - 1 = 5
<<
将位模式向左移动,有符号右移运算符>>
将位模式向右移动。位模式由左操作数给出,要移位的位置数由右操作数给出。无符号右移运算符>>>
在最左边的位置上移入零,而>>
之后最左边的位置取决于符号扩展。(12 >> 1) - 1)
>>
是二进制右移操作符,将二进制数 12(1100)
向右移动 1 位。
12 >> 1 == 6(110)
6 - 1 == 5
>>
执行算术右移操作。
例如:
12 >> 1 = 6
-12 >> 1 = -6