飞飞肥 2022-10-15 11:54 采纳率: 40%
浏览 28

明解c语言 第七章 7-6

有点问题不太懂
这是明解c语言的代码清单7-6的函数部分

int count_bits(unsigned x)
{
    int bits = 0;
    while (x)
    {
        if (x & 1U)
            bits++;
            x >>= 1;
    } //返回整数x中设置的位数
    return bits;
}
int int_bits()
{
    return count_bits(~0U);
}//返回unsigned型的位数
void print_bits(unsigned x)
{
    int i;
    for (i = int_bits() - 1; i >= 0; i--)
        putchar(((x >> i) & 1U) ? '1' : '0');
}// 显示unsigned型的位的内容

我觉得第一部分代码 也就是count_bits部分的代码是显示位数
那么如果我想检验7 这个数字 那不应该输出3 么
但结果好像不是这样
我肯定有哪点不懂
希望各位可以帮忙

还有想问一下 c中有什么简单的方法监视函数内部的运行情况吗?

  • 写回答

3条回答 默认 最新

  • X-道至简 2022-10-15 12:10
    关注

    输出3个1,算出一个数的位数 然后把每一位输出 应该是显示二进制的数

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月15日

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题