K&R – 了解练习2-8:究竟是什么问题在这里?
我正在完成K&R书中的练习。 目前我被困在练习2-8,这说明如下:
Write a function rightrot(x, n) that returns the value of the integer x rotated to the right by n bit positions.
我遇到的麻烦是,我似乎无法想象结果应该是什么样子。
如何或如何旋转? 在x
向左移位并重复n
位后,我是否将最左边的位置于x
的最右侧位置? 或者我取一个块( n
位)并将其n
位向右,同时保留最右边的其余位不变?
任何有用的答案表示赞赏。 谢谢。
旋转意味着您实际上是向左或向右移动,否则“丢失”的位将重新出现在另一侧。
使用十进制数来解释会容易得多:
将123456789
向右旋转3位数将导致789123456
。 将123456789
向左旋转4位数将导致567891234
。
因此,您基本上从一侧获取n位并将它们附加到其他位置。 如果你想到坐在圆圈或轮子上的所有数字,你就会更容易理解。
为了避免混淆,只需将“旋转”替换为“移动”或“移位”,并且不要忘记保存否则丢失的位。
正确的想法,但另一种方式。
最右边的一点。 向右转。 设置最左边的位。 这样做n次。