首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K&R -理解练习2-8:这里到底问了什么?

K&R -理解练习2-8:这里到底问了什么?
EN

Stack Overflow用户
提问于 2011-07-10 05:27:42
回答 2查看 1.2K关注 0票数 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向左移位后,是否将最左边的位放到x的最右边,并对n位重复此操作?或者我将一个块(n位)放在右边的n位,而保持最右边的位不变?

任何有用的答案都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-10 05:57:53

旋转意味着你基本上是在向左或向右移动,但其他“丢失”的比特将重新出现在另一边。

用十进制数来解释要容易得多:

123456789向右旋转3位将得到789123456。将123456789向左旋转4位将得到567891234

所以你需要从一边取n个比特,然后把它们连接到其他比特上。如果你把所有的数字都放在一个圆圈或轮子上,绕着圆心旋转,就更容易理解了。

为了避免混淆,只需将"rotate“替换为"move”或"shift“,并且不要忘记保存否则丢失的位。

票数 7
EN

Stack Overflow用户

发布于 2011-07-10 05:44:04

正确的想法,但另一种方式。

得到最右边的比特。向右移。设置最左边的位。这样做n次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6637578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档