将一个值的二进制模式逆序结果输出

来源:互联网 发布:淘宝u站推广 编辑:程序博客网 时间:2024/06/06 14:09

           题目来源:在《C和指针》这本书中的第5章第三题。


/*** Function : unsigned int reverse_bits(unsigned int value);** Date : 2013-8-8** Author : ZZZ** 将value的二进制模式逆序结果输出.** 例如如: 32位机上, 输入 25, 返回 2 550 136 832;** 25 = 0000 0000 0000 0000 0000 0000 0001 1001(B);** 2 550 136 832 = 1001 1000 0000 0000 0000 0000 0000 0000(B);** 代码不依赖机器上整型的长度.*/unsigned int reverse_bits(unsigned int value){    // 初始化,如果个位数为1,一次计算后为1;    // 如果个位数为0,在第二次计算时应该是乘2,故初始值为1.    unsigned int rslt = (value & 0);    // 标志移位的次数    unsigned int flag = 1;    while(flag != 0)    {        if((value & 1) == 1)        {            rslt = (rslt << 1) + 1;        }        else        {            rslt <<= 1;        }        value >>= 1;        flag <<= 1;    }    return rslt;}


原创粉丝点击