黑马程序员技术交流社区

标题: 位运算应用4 [打印本页]

作者: wangshengjie    时间: 2015-3-12 09:12
标题: 位运算应用4
/*
        循环位移。要求将a进行右循环位移。将a右循环移n位,即将a中原来左面(16-n)位右移n位,
        原来右端n位移到最左面n位。
*/

#include<stdio.h>


void main()
{

        unsigned BitOperation(unsigned x, int n);

        unsigned y, z;
        int m;
        scanf("y=%o,m=%d", &y, &m);

        z = BitOperation(y, m);

        printf("八进制y=%o,十进制y=%d\n", y, y);
        printf("八进制z=%o,十进制z=%d\n", z, z);
}

unsigned BitOperation(unsigned x,int n)
{

        unsigned a, b, c, d, e;

        a = ~(~0 << n);
        b = x&a;
        c = x >> n;
        d = b << (16-n);
        e = c | d;

        /*
                //错误,与计算机系统有关,a右移n位,高位不是补0
                unsigned a, b, c;

                a = x >> n;
                b = x << (16 - n);
                c = a | b;
        */

        return e;
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2