.net 是否有任何C#按位移位运算符可以将溢出的位移到变量的另一端?

enyaitl3  于 2022-11-26  发布在  .NET
关注(0)|答案(4)|浏览(192)

就叫〈〈〈吧

int32variable <<< numberOfBits

相等

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

(假设〈< and >〉丢弃溢出位)
还有这样的符?

fkvaft9z

fkvaft9z1#

这将是一个称为位循环的,C#没有这样的运算符。
这里有一个有趣的帖子:Is there a way to perform a circular bit shift in C#?
请注意,int32integer的类型应为uint(无符号整型)。
我相信位循环是英特尔指令集中的一个指令,但据我所知,CLR没有位循环指令。

ui7jx7zq

ui7jx7zq2#

这被称为按位旋转。其他语言都有,但C#没有。更多细节请参见this question,但其要点是,您当前的方法是您所能做的最好的。

bpzcxfmw

bpzcxfmw3#

C#中没有基本运算符来执行您要查找的操作。
忽略方法调用的性能影响(如果您正在执行位移位操作,您可能会关心),这将是Int32上扩展方法的一个很好的候选对象。

cdmah0mi

cdmah0mi4#

我认为C#没有。请参阅此页以获取C#操作符的列表:http://msdn.microsoft.com/en-us/library/6a71f45d(vs.71).aspx
我认为你在问题中所展示的方法可能是最快的方法。我认为Java可能有一个移位操作符,就像你所追求的那样,但作为一个Java程序员,我不能确认这一点。

相关问题