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

xiaocangfeng 2012-11-01 01:06:42
这个几天看到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(' ');
}
}
求帮分析!感激!
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocangfeng 2012-11-01
  • 打赏
  • 举报
回复
我不会单步调试啊,不知道怎么用,不过你回答得蛮好的,虽然我还是不明白具体的怎么作用的!谢谢你!给你分了。[Quote=引用 2 楼 的回复:]

单步调试一下就清楚了。
itobs() 将 int数字 转换为 二进制位字符串
show_bstr() 用来显示二进制位字符串,每4个字符一组,用空格隔开
[/Quote]
「已注销」 2012-11-01
  • 打赏
  • 举报
回复
看不懂多调用就好了,楼上正解。
zhuyf87 2012-11-01
  • 打赏
  • 举报
回复

// 显示 二进制位字符串
void show_bstr(const char *str)
{
int i = 0;
while(str[i]) // 遇到\0(字符串结尾符)终止循环
{
putchar(str[i]); // 输出一个二进制bit
if(++i%4 == 0 && str[i]) // 4位一组显示二进制字符串
putchar(' '); // 每4个bit为一组,每组之间用空格隔开
}
}
zhuyf87 2012-11-01
  • 打赏
  • 举报
回复

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;
}
zhuyf87 2012-11-01
  • 打赏
  • 举报
回复
单步调试一下就清楚了。
itobs() 将 int数字 转换为 二进制位字符串
show_bstr() 用来显示二进制位字符串,每4个字符一组,用空格隔开
xiaocangfeng 2012-11-01
  • 打赏
  • 举报
回复
求 解惑!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧