34

>>>Javaの演算子に相当する(C#での)ものは何ですか?

(明確にするために、>>and<<演算子については言及していません。)

4

6 に答える 6

30

C# では、符号なし整数型を使用して、期待どおりの動作<<を行うことができます。詳細については、シフト演算子に関する MSDN ドキュメントを>>参照してください。

Java は ( を除いて) 符号なし整数をサポートしていないためchar、この追加の演算子が必要になりました。

于 2009-12-10T10:52:12.507 に答える
15

Java には符号なしの左シフト ( ) はありませんが、<<<いずれにせよ、そこにキャストしuintて shfit するだけです。

例えば

(int)((uint)foo >> 2); // temporarily cast to uint, shift, then cast back to int
于 2009-12-10T10:54:57.017 に答える
2

これを読んで、次の使用に関する私の結論が正しいことを願っています。そうでない場合は、洞察をいただければ幸いです。

ジャワ

i >>>= 1;

C#:

i = (int)((uint)i >> 1);
于 2011-01-14T20:54:59.903 に答える
2

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);
    }
于 2011-07-08T14:27:31.977 に答える
1

C# には >>> 演算子はありません。ただし、int、long、Int16、Int32、Int64 などの値を unsigned uint、ulong、UInt16、UInt32、UInt64 などに変換できます。

これが例です。

    private long getUnsignedRightShift(long value,int s)
    {
        return (long)((ulong)value >> s);
    }
于 2015-06-30T05:35:46.127 に答える