0

我们称之为“<<<”

int32variable <<< numberOfBits

等于

(int32variable << numberOfBits) | (int32variable >> (32 - numberOfBits))

(假设 << 和 >> 丢弃溢出的位)

有这样的运营商吗?

4

4 回答 4

4

那将被称为位旋转,而 C# 没有这样的运算符。

这是一篇有趣的帖子: 有没有办法在 C# 中执行循环位移?

请注意,您的 int32integer 应该是类型uint(无符号整数)。

我相信位旋转是英特尔指令集中的指令,但据我所知,CLR 没有位旋转指令。

于 2009-06-08T01:05:31.153 回答
1

这称为按位旋转。其他语言有,但 C# 没有。有关更多详细信息,请参阅此问题,但其要点是您当前的方法与您能做的一样好。

于 2009-06-08T01:05:41.310 回答
0

C# 中没有原始运算符可以执行您要查找的操作。

忽略方法调用的性能影响(如果您正在执行位移操作,您可能会关心),这将是 Int32 上扩展方法的一个很好的候选者。

于 2009-06-08T00:57:28.237 回答
0

我不认为有 C#。有关 C# 运算符的列表,请参阅此页面:http: //msdn.microsoft.com/en-us/library/6a71f45d (vs.71).aspx 。

我认为您在问题中展示的方式可能是最快的方法。我认为 Java 可能有一个像您所追求的那样的移位运算符,但不是 Java 程序员,我无法确认。

于 2009-06-08T01:12:48.690 回答