什么是Java无符号右移运算符的C#等价物>>>

我试图将一些Java代码转换为C#。 如何在C#中表示以下无符号右移操作 ?

int src1, src2, ans; ans = src1 >>> src2; 

您必须首先进行投射,没有一个运算符用于>>>,代码示例:

  int x = -100; int y = (int)((uint)x >> 2); Console.WriteLine(y); 

C#的>>运算符对运算符的签名状态( int vs uint )很敏感。 如果你需要操作int ,首先转换为unit

我认为它只是>>是否签名取决于它是int / long还是uint / ulong,所以你必须在必要时进行转换

您可以使用此方法代替operator >>>

 int src1, src2, ans; ans = rightMove(src1 , src2); int rightMove(int value, int pos) { if (pos != 0) { int mask = 0x7fffffff; value >>= 1; value &= mask; value >>= pos - 1; } return value; }