新手继续求教,关于位操作的的示例程序求解!
这个几天看到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;
}