【发布时间】:2008-08-29 19:54:43
【问题描述】:
我知道以下是正确的
int i = 17; //binary 10001
int j = i << 1; //decimal 34, binary 100010
但是,如果你移动得太远,位就会从末端掉下来。发生这种情况的地方取决于您正在使用的整数的大小。
有没有办法执行移位,以便位旋转到另一侧?我正在寻找单个操作,而不是 for 循环。
【问题讨论】:
-
这种类型的操作应该在哪里使用?进行位旋转的目的是什么?我不需要知道,只是对不断扩展的知识感兴趣。基思
-
一个很好的问题。我刚刚检查了生成的代码,C# 编译器没有生成使用 CPU 旋转指令的代码(不是说 x86 架构自 8086 以来就有它们......)。这是一种耻辱。 C 执行此优化。轮换对于加密和 dsp 任务也非常重要。
标签: c# bit-manipulation