gpt4 book ai didi

将十进制转换为具有长整数值的二进制 C

转载 作者:行者123 更新时间:2023-11-30 16:28:01 25 4
gpt4 key购买 nike

我的程序旨在通过从输入文件读取值然后将二进制值输出到输出文件中来将十进制转换为二进制。假设输入文件有这些数字:

190 31 5 891717742

除了 891717742 之外,所有内容都可以很好地转换为二进制。这会输出一个完全偏离二进制输出的值。我尝试过 LONG 但它们只是输出负值。例如,这将输出:

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 语法允许您在对整数进行赋值或执行其他操作时使用基数 10 和基数 16 文字。这可能会让人觉得它没有被视为二进制数,但事实确实如此。在您的程序中,您混淆了以 2 为基数的表示形式和以 10 为基数的表示形式。 891717742(基数 10)转换为二进制是 110101001001101000100001101110。您的算法本质上试图做的是将基数 10 数字 110101001001101000100001101110 存储在 int 中。这个以 10 为基数的数字甚至比 64 位数字都大,它实际上需要 97 位来存储。

检查这个答案,看看如何打印出 C: Is there a printf converter to print in binary format? 中 int 的二进制表示形式

关于将十进制转换为具有长整数值的二进制 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52548304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com