练习2-8rightrot

rot2-6/7书上讲的都很细,这就不用太细的说明,p+1是因为最低位第一个是0。而正常计数第一个都是1开始,所以就要+1用以去准确的指定位数。

2-8练习第一个解法,先将x的最右侧一位用x&1选取出来(我感觉没什么用)之后将他左移到最左侧并赋值给rbit。然后将x右移一位,然后将rbit(原x最右侧的值)与现在的x进行OR运算(只要有一个是1结果就是1)。然后函数返回x。

函数wordlength的作用就是计算字长(一共有多少位),先将v变成所有位都为1的变量,然后再将其循环右移,变量i记录移动了几次,移到0的时候就得到了一共有多少位。

wordlength函数返回后需要-1才是当前位最左的一位,因为如果不-1的话就是又回到原点了。

第二种解法说起来也不太复杂,就是我不去算你循环多少次,我只算需要移动多少就可以。先用n去对wordlength(总字长)去取余算出需要移动多少。然后将需要移动的那么位赋值给rbits然后将x移动n位,接着将rbits里存着的二进制数与x进行OR运算结果就是最终结果。

你可能感兴趣的:(练习2-8rightrot)