のは、それを呼ぼう "< < <は"オーバーフローしたビットを変数のもう一方のチップに移動するC#ビット単位のシフト演算子がありますか?
int32variable <<< numberOfBits
は
が(int32variable << numberOfBits) | (int32variable >> (32 - numberOfBits))
は、オペレータがあります(< <と>>破棄溢れたビットを仮定)に等しいですか?
のは、それを呼ぼう "< < <は"オーバーフローしたビットを変数のもう一方のチップに移動するC#ビット単位のシフト演算子がありますか?
int32variable <<< numberOfBits
は
が(int32variable << numberOfBits) | (int32variable >> (32 - numberOfBits))
は、オペレータがあります(< <と>>破棄溢れたビットを仮定)に等しいですか?
これはビット回転と呼ばれ、C#にはこのような演算子がありません。 Is there a way to perform a circular bit shift in C#?
注意ごint32integerはタイプuint
(unsigned int型)でなければなりません:
はここに興味深い記事です。
私はビットの回転はインテルの命令セットの命令だと思うけど、私が知る限り、CLRはビットの回転命令を持っていません。
あなたが探していることを行うためにC#にプリミティブ演算子はありません。
メソッド呼び出しのパフォーマンスの影響を無視して(ビットシフト操作を行っている場合は気になるかもしれませんが)、これはInt32の拡張メソッドの候補になります。
これは、ビット単位の回転と呼ばれます。他の言語はそれを持っていますが、C#ではそうではありません。もう少し詳細については、this questionを参照してください。しかし、その要点は、あなたの現在のアプローチがあなたができるほど良くなっているということです。
C#があるとは思いません。 C#演算子のリストについては、http://msdn.microsoft.com/en-us/library/6a71f45d(vs.71).aspxを参照してください。
あなたの質問に表示された方法はおそらくそれを行う最も簡単な方法だと思います。私は、Javaは、あなたが後にあるもののようなシフト演算子を持つかもしれないと思うが、私はそれを確認することはできませんJavaプログラマーではない。
私は誰かがそれに私を打つ答えを参照してください。 –
実際、http://en.csharp-online.net/CIL_Instruction_Setによると、CILには3つのビットシフト命令がありますが、回転命令はありません。これは意味があります。なぜなら私が知っている(組み立てられていない)プログラミング言語はビット演算子を回転させるものではないからです。なぜCILがそれをサポートすべきですか? – David