7

需要移动 Int64 变量。我正在从数据库文件中解析伪数学函数。变量是 uint32 或 int32,所以我确实将它们放入 Int64 以平等地处理它们而不会丢失任何东西。在我的一个树节点中,我需要对 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 回答