![]() |
1
17
|
![]() |
2
23
有符号整数使用高位来表示符号。
所以
这样,您可以(假设为32位整数)执行以下操作:
对于正整数,
这也解释了为什么不需要
|
![]() |
3
8
从 Java Notes: Bitwise Operators : n & gt;gt;p (右移) 移动n右p位置的位。如果n是2的补码有符号数,则符号位移到高位。 例子: 5>>2=1 不适用 (右移) 移动n右p位置的位。零移到高阶位置。 例子: -4>>>28=15 |
![]() |
4
4
正确的答案已经发布了不止一次,但不是来自权威来源。 这是从 JLS §15.19 Shift Operators :
|
![]() |
5
4
对于正数,没有区别。负数(两个补码)将用零填充>>,一个填充>。 1010 0110>>>2=0010 1001 1010 0110>>2=1110 1001 |
![]() |
6
2
>>是一个算术移位,它将符号位保留在任何“空”位中。另一种是逻辑移位,它用零填充空位。 |
![]() |
7
0
一些 info
|
![]() |
8
0
它与有符号值数学有关。这个
|
![]() |
9
0
算术移位& gt;& gt;对于有符号整数除以二,而逻辑移位& gt;& gt;& gt;对于无符号数除以两个(如果你将符号Javaint中的位模式解释为无符号整数)。 |