C中移位符的一个小应用

来源:互联网 发布:淘宝联盟采集器 编辑:程序博客网 时间:2024/06/05 22:58

转自《C和指针》

在写程序时,对于整数类型的值,不同的机器有着不同的存储位数,比如对于int类型,有的机器是32位的,有的是16位的,这样就涉及了程序的移植性问题。

现有如下需求:请编写函数unsigned int reverse_bits(unsigned int value),函数返回值为把value的二进制位前后颠倒后的结果,例如在16位机器上,1的二进制形式为0000 0000 0000 0001,函数返回值为1000 0000 0000 0000,编写函数时要注意不要让其依赖机器的整型值长度,以增强程序的可移植性。


实现如下:

unsigned int reverse_bits(unsigned int value){
    unsigned int result=0,i=1;
 
    for(;i!=0;i<<=1){//通过i移位直至为0来确定循环的次数,不依赖机器的整型值长度
        result<<=1;
        if(value&1){
            result|=1;
        }
        value>>=1;
    }
    return result;
}

原创粉丝点击