什么是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; }