📅  最后修改于: 2020-03-24 04:59:01             🧑  作者: Mango
在C / C++中,只有一个右移运算符“ >>”应仅用于正整数或无符号整数。在C / C++,不建议负数使用向右移位运算符,与C++不同,Java支持以下两个右移运算符。
1)>>(带符号右移)在Java中,运算符’>>’是带符号右移运算符。所有整数都用Java符号,可以将>>用作负数。运算符“ >>”使用符号位(最左边的位)在移位后填充尾随位置。如果数字为负,则将1用作填充符,如果数字为正,则将0用作填充符。例如,如果数字的二进制表示形式是1 0….100,则使用>>右移2将其变为11 ….1。
请参阅以下Java程序作为示例“ >>”
class Test {
public static void main(String args[]) {
int x = -4;
System.out.println(x>>1);
int y = 4;
System.out.println(y>>1);
}
}
输出:
-2
2
2)>>>(无符号右移)在Java中,运算符’>>>’是无符号右移运算符。无论数字的符号如何,它始终填充0。
class Test {
public static void main(String args[]) {
// x利用32bit二进制补码储蓄
// -1的二进制表示是:(111..1)
int x = -1;
System.out.println(x>>>29); // 'x>>>29' 是 00...0111
System.out.println(x>>>30); // 'x>>>30' 是 00...0011
System.out.println(x>>>31); // 'x>>>31' 是 00...0001
}
}
输出:
7
3
1