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
相关产品推荐
相关产品推荐

