Java >>>
运算符的等价物(在C#中)是什么?
(只是为了澄清,我不是指>>
和<<
运营商。)
答案 0 :(得分:30)
在C#中,您可以使用无符号整数类型,然后<<
和>>
执行您期望的操作。 MSDN documentation on shift operators为您提供详细信息。
由于Java不支持无符号整数(除char
之外),因此需要使用这个附加运算符。
答案 1 :(得分:13)
Java没有无符号左移(<<<
),但无论哪种方式,你都可以转换为uint
并从那里进行shfit。
E.g。
(int)((uint)foo >> 2); // temporarily cast to uint, shift, then cast back to int
答案 2 :(得分:2)
阅读本文后,我希望我的使用结论如下是正确的。 如果没有,那么洞察力就会受到赞赏。
爪哇
i >>>= 1;
C#:
i = (int)((uint)i >> 1);
答案 3 :(得分:1)
n&gt;&gt;&gt; Java中的s相当于TripleShift(n,s),其中:
private static long TripleShift(long n, int s)
{
if (n >= 0)
return n >> s;
return (n >> s) + (2 << ~s);
}
答案 4 :(得分:1)
没有&gt;&gt;&gt; C#中的运算符。但是您可以将int,long,Int16,Int32,Int64等值转换为unsigned uint,ulong,UInt16,UInt32,UInt64等。
以下是示例。
private long getUnsignedRightShift(long value,int s)
{
return (long)((ulong)value >> s);
}
答案 5 :(得分:0)
我的 VB.Net 人
上面建议的答案会为您提供Option Strict ON
以上述解决方案为例-100 >>> 2
尝试此操作:
以下代码始终适用于>>>
Function RShift3(ByVal a As Long, ByVal n As Integer) As Long
If a >= 0 Then
Return a >> n
Else
Return (a >> n) + (2 << (Not n))
End If
End Function