将int转换为二进制,使用char数组来表示它

时间:2013-03-19 22:22:08

标签: c

为类的作业分配工作,部分作业让我们从十进制转换为二进制,并将二进制数表示为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。

2 个答案:

答案 0 :(得分:2)

我不会直接给你答案,因为这是作业,我会指出在哪里搜索。在得到余数后,仔细看看你做了什么。尝试在你得到它的地方打印并分析你看到的内容。

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

答案 1 :(得分:0)

这里有两件事需要解决。

循环条件错误一个 - :

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

逻辑需要逆转 - :

if(rem == 0)
    binaryNumber[i]='0';
else
    binaryNumber[i]='1';