The C Programming Language 练习题2-8

来源:互联网 发布:软件测试的周期 编辑:程序博客网 时间:2024/05/29 08:33

题目
编写一个函数rightrot(x, n),该函数返回将x循环右移(即从最右端移出的位将从最左端移入)n(二进制)位后所得到的值。

题目分析
先统计有效数字位,然后分布挪移。

编程实现

#include <stdio.h>unsigned rightrotemp(unsigned x, int n);int m;int main(){    int a, b;    a = 2888;    b = a;    m = 1;    while ( (a >>= 1) != 0)        m++;    printf("final=%d\n", rightrotemp(b, 4));}unsigned rightrotemp(unsigned x, int n){    int i, j;    i = x >> n;    j = x & (~(~0 << n));    x = (j << (m - n)) | i;    return x;}
原创粉丝点击