You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现二进制数每4位加空格功能 解决最高位多出一位问题

问题原因

  • 你当前的循环设置为从i=16遍历到i=0,总计输出17位二进制位,而你预期的是16位输出,所以开头多了一个多余的最高位0。
  • i=16刚好是4的倍数,输出完多余的最高位后会额外输出一个空格,最终就出现了开头0 的错误格式。

解决方案

只需要修改循环的起始值即可,将原来的for ( i = 16; i >= 0; i--)调整为for ( i = 15; i >= 0; i--),其余逻辑不用改动。

修改后完整代码

#include <stdio.h>
#include <stdlib.h>
void convert(int num){
    int bit,i;
    // 循环起始从16改为15,遍历15~0共16位
    for ( i = 15; i >= 0; i--)
    {
        bit = num>>i;
        if (bit & 1)
            printf("1");
        else
            printf("0");

        if (i && !(i & 3)) // i非0且是4的倍数时输出空格
            printf(" ");
    }
    printf("\n");
}

内容的提问来源于stack exchange,提问作者anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:45:03