使用Int64进行位移

时间:2012-07-05 11:46:36

标签: c# .net bit-shift int64

需要移位Int64变量。我正在从数据库文件中解析伪数学函数。变量是uint32或int32所以我确实将它们放入Int64中以平等地处理它们而不会丢失任何东西。在我的一个treenodes中,我需要使用bithift Int64。

不幸的是,shift运算符不适用于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

2 个答案:

答案 0 :(得分:15)

我相信右移运算符的右手操作数(在C#中)总是需要int,即使左手操作数不是int

官方详情请见C# Specification on MSDN

答案 1 :(得分:9)

要移位的位数必须为int

例如:

int shift = 3;
long foo = 123456789012345;
long bar = foo >> shift;