2

为班级做家庭作业,部分作业让我们从以十为底的转换为二进制,并将二进制数表示为 char 类型的数组。由于某种原因,它没有计算最正确的位。任何帮助,将不胜感激。

#include <stdlib.h>
#include <stdio.h>
xtractmsg(int a)
{
   int rem,i,b,j,quotient;
   char binaryNumber[16];



   for(i = 0; i <= 16; i++){

        if(a == 0)
           binaryNumber[i]='0';
        else{

           rem = a % 2;

           if(rem == 0)
                   binaryNumber[i]='1';
           else
                  binaryNumber[i]='0';
          a=a/2;
        }


   }

    for(j=15; j>=0;j--)
        printf("%c,%d",binaryNumber[j]);


}

输入为 10,输出为 0000000000000101。

4

2 回答 2

2

我不会直接给你答案,因为是功课,我会指出在哪里搜索。仔细看看你在得到剩余部分后做了什么。试着在你得到它的地方打印它并分析你所看到的。

不相关但也是错误for(i = 0; i <= 16; i++)的,最终会写入不存在的第 17 个元素。

于 2013-03-19T22:30:13.700 回答
0

这里有两件事需要解决。

循环条件错误一:

for(i = 0; i < 16; i++) {

逻辑需要反转-:

if(rem == 0)
    binaryNumber[i]='0';
else
    binaryNumber[i]='1';
于 2013-03-19T22:46:52.340 回答