C中移位符的一个小应用

转自《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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值