>>>
Javaの演算子に相当する(C#での)ものは何ですか?
(明確にするために、>>
and<<
演算子については言及していません。)
C# では、符号なし整数型を使用して、期待どおりの動作<<
を行うことができます。詳細については、シフト演算子に関する MSDN ドキュメントを>>
参照してください。
Java は ( を除いて) 符号なし整数をサポートしていないためchar
、この追加の演算子が必要になりました。
Java には符号なしの左シフト ( ) はありませんが、<<<
いずれにせよ、そこにキャストしuint
て shfit するだけです。
例えば
(int)((uint)foo >> 2); // temporarily cast to uint, shift, then cast back to int
これを読んで、次の使用に関する私の結論が正しいことを願っています。そうでない場合は、洞察をいただければ幸いです。
ジャワ
i >>>= 1;
C#:
i = (int)((uint)i >> 1);
Java の n >>> s は TripleShift(n,s) と同等です。
private static long TripleShift(long n, int s)
{
if (n >= 0)
return n >> s;
return (n >> s) + (2 << ~s);
}
C# には >>> 演算子はありません。ただし、int、long、Int16、Int32、Int64 などの値を unsigned uint、ulong、UInt16、UInt32、UInt64 などに変換できます。
これが例です。
private long getUnsignedRightShift(long value,int s)
{
return (long)((ulong)value >> s);
}