7

Int64変数をシフトする必要があります。データベースファイルから疑似数学関数を解析しています。変数はuint32またはint32であるため、何も失うことなくそれらを同等に処理するために、それらをInt64に入れました。ツリーノードの1つで、Int64をビットシフトする必要があります。

残念ながら、シフト演算子はInt64には適用されません。私が気付いていないInt64をビットシフトする標準的な方法はありますか?

//Int32 Example works
int a32 = 1;
int b32 = 2;
int c32 = a32 >> b32;

//Int64 Example does not compile
Int64 a64 = 1;
Int64 b64 = 2;
Int64 c64 = a64 >> b64; //invalid operator
4

2 に答える 2

16

右シフト演算子(C#)の右オペランドはint、左オペランドが。でなくても、常に。を取ると思いますint

公式の詳細は、MSDNのC#仕様にあります。

于 2012-07-05T11:48:36.047 に答える
9

シフトするビット数は。でなければなりませんint

例えば:

int shift = 3;
long foo = 123456789012345;
long bar = foo >> shift;
于 2012-07-05T11:49:41.413 に答える