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