首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

生手继续求教,关于位操作的的示例程序求解

2012-12-31 
新手继续求教,关于位操作的的示例程序求解! 这个几天看到CPP的位操作上面来了,有个示例程序,里面有两个函

新手继续求教,关于位操作的的示例程序求解!
 这个几天看到CPP的位操作上面来了,有个示例程序,里面有两个函数,真心看不懂!使用位感觉好别扭!}

 

char * itobs(int n,char * ps)
{
   int i; 
   static int size = 8 * sizeof(int);
  for(i = size -1;i >= 0;i--,n >>= 1)
       ps[i]=(n&1) + '0';         //由于是字符数组,因此加'0'进行转换
       ps[size]='\0';
    return ps;
}
void show_bstr(const char *str)
{
   int i = 0;
  while(str[i])
   {   
      putchar(str[i]);
     if(++i%4 == 0 && str[i])      //4位一组显示二进制字符串
      putchar(' ');
    }
}
求帮分析!感激!
[解决办法]


char * itobs(int n,char * ps)
{
int i;  
static int size = 8 * sizeof(int); // size: 计算int有多少个bit
for(i = size -1;i >= 0;i--,n >>= 1) // 提取n的每一个bit(最低位),每处理一次,n右移一位
ps[i]=(n&1) + '0'; // 由于是字符数组,因此加'0'进行转换
   // n&1: 取n的最低位
ps[size]='\0'; // 字符串最后要以\0结尾,看一下show_bstr的while循环就知道它的作用了
return ps;
}

热点排行