| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 352 人关注过本帖
标题:自学新手:二进制位反置函数,请大虾指点。
只看楼主 加入收藏
qdg008
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2011-8-25
结帖率:100%
收藏
 问题点数:0 回复次数:0 
自学新手:二进制位反置函数,请大虾指点。
程序代码:
#include <stdio.h>
unsigned reverse_bits(unsigned );  //反值二进制位函数
void btostr(unsigned );           //数值的二进制以字符串形式排列,并显示。
int main(void)
{
    unsigned a=25;
    btostr(a);
    printf("reverse value is %u\n",reverse_bits(a));
    printf("and now a is %u",a);
    return 0;
}
unsigned reverse_bits(unsigned v)
{
    unsigned a=0;
    signed int t=1,i=0;
    while(t>0)                     //求int型数的bit位数
    {               
        t<<=8;    
        i+=8;       
    }
    printf("i=%d\n",i);            //查看bit位数
    while(v!=0)                  
    {                             
        a=a|((v&1u)<<--i);         //最后一位前移bit位减1位
        v>>=1;                     //次一位前移bit位减2位
        puts("Now a is:");        
        btostr(a);                
        puts("Now v is:");        
        btostr(v);               
    }
    return a;
}
void btostr(unsigned v)         
{
    int i=32;
    char str[33];
    str[32]='\0';
    while(i>0)
    {
        str[--i]=v&1?'1':'0';
        v>>=1;
    }
    i=0;
    while(str[i])
    {
        printf("%c",str[i++]);
        if(i%4==0)
            putchar(' ');
    }
    putchar('\n');
}
搜索更多相关主题的帖子: 自学 
2012-08-11 18:43
快速回复:自学新手:二进制位反置函数,请大虾指点。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025999 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved