我的程序旨在通过从输入文件中读取值,然后将二进制值输出到输出文件中,将十进制转换为二进制。可以说输入文件具有以下数字:
190 31 5 891717742
除了891717742,一切都可以转换为二进制。这输出的值与二进制输出完全不同。香港专业教育学院尝试了一个长,但他们只是输出一个负值。例如,这将输出:
11000100 11110010 11 "1434923237" <- not right (not the actual binary values)
十进制到二进制(在线):
char* convertDecimalToBinary(int n)
{
int binaryNumber = 0;
int remainder, i = 1;
static char buff[100];
while (n!=0)
{
remainder = n%2;
n /= 2;
binaryNumber += remainder*i;
i *= 10;
}
sprintf(buff, "%d", binaryNumber );
return buff;
}
根本的问题是您试图使用int来存储二进制表示形式。一个int就是那个整数。在内存中,它以二进制形式表示,但是C语法允许您在对int赋值或执行其他操作时使用基数10和基数16的文字。这可能使它看起来好像没有被视为二进制数,但实际上确实如此。在您的程序中,您混淆了以2为底的表示和以10为底的表示。891717742(以10为基数)转换为二进制是11010100100110100010000100001101110。您的算法本质上是试图将以10为基数的110101001001101000100001101110存储在一个int中。该基数10甚至大于64位数字,实际上将需要97位存储。
检查此答案,以了解如何在C中打印出int的二进制表示形式:是否有printf转换器以二进制格式打印?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句